Давайте разберемся с вашей ситуацией по порядку.
1. **Проблема с получением cookie**: Вы правильно заметили, что если cookie имеет атрибут `HttpOnly`, то доступ к нему из JavaScript невозможен. Однако, поскольку вы установили `httponly=False`, то доступ к нему должен быть возможен. Важно отметить, что если cookie установлен с флагом `Secure`, он будет передаваться только по HTTPS соединению. Убедитесь, что ваше приложение работает по HTTPS, иначе cookie не будет доступна.
2. **Параметр SameSite**: Когда вы устанавливаете cookie с `SameSite=None`, он может быть доступен для кросс-доменных запросов, но необходимо, чтобы передавался флаг `Secure`. Если ваш сервер работает по HTTP, браузер может заблокировать эту cookie.
Если вы хотите использовать `SameSite=Lax`, то это будет работать в большинстве случаев, но типичный сценарий для этого — это когда вы не делаете кросс-доменные запросы. Чтобы избежать ошибки, рассмотрите возможность корректировать настройки вашего приложения и использовать `SameSite` согласно вашим требованиям.
3. **Проверка доступности cookie**: Чтобы убедиться, что cookie была установлена, вы можете использовать следующее JavaScript:
```javascript
console.log(document.cookie);
```
Это позволит вам увидеть все доступные cookie. Убедитесь, что `csrftoken` присутствует в выводе.
4. **Примеры настройки cookie**: Измените ваш Django код на следующий, чтобы использовать `SameSite='Lax'`, и старайтесь запрашивать CSRF токен только с одного и того же домена (если это возможно):
```python
response.set_cookie(
'csrftoken',
get_token(request),
samesite='Lax', # или 'None', если используете Secure
httponly=False,
secure=True # Убедитесь, что ваше приложение работает по HTTPS
)
```
5. **Проверка междоменных запросов**: Если ваша клиентская часть и сервер находятся на разных доменах (например, localhost для клиента и другой адрес для сервера), можете попробовать добавить хедеры CORS для разрешения кросс-доменных запросов.
6. **Решение проблем с кросс-доменными запросами**: Если ваш клиент и сервер находятся на разных доменах, убедитесь, что у вас настроены CORS заголовки на сервере, чтобы разрешить запросы:
```python
from corsheaders.defaults import default_methods, default_headers
from corsheaders.middleware import CorsMiddleware
CORS_ALLOW_ALL_ORIGINS = True # Или настройте конкретные домены
```
Убедитесь, что вы правильно настроили все параметры, и попробуйте снова получить доступ к куки из JavaScript.