Как разрешить CORS из расширения chrome origin на django после установки белого списка на all?
Я пытаюсь повторно добавить защиту от CSRF-токенов к API, сделанному с помощью Django и развернутому на heroku. Локальные тесты с разрешенной проверкой CSRFToken работали нормально до того, как я загрузил веб-приложение в heroku, но теперь, когда я нахожусь в финальных тестах, оно не работает, пока я не добавлю декоратор csrf_exempt в представление Django. Я получил следующую ошибку с Django 3.1.7: Referer checking failed - no Referer
Я использую Django 4.0 на heroku и я решил попробовать версию 3.1.7, потому что я думал, что это может решить мою проблему, так как в этом вопросе я понял, что это было потому, что в предыдущих версиях Django CSRF домен не проверялся: Forbidden (403) CSRF verification failed. Запрос прерван. Причина неудачи: Origin checking failed does not match any trusted origins, а я уже пытался разрешить все origins таким образом (я уже использую библиотеку django-cors-headers):
В settings.py:
CSRF_TRUSTED_ORIGINS = ['*']
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_CREDENTIALS = True
Все это с одной и той же ошибкой:
2022-01-19T23:01:08.715032+00:00 heroku[router]: at=info method=POST path="/smoke/add/" host=my-app.herokuapp.com request_id=b1342451-1a4b-4a0c-9993-ba1e86f0f969 fwd="187.168.154.155" dyno=web.1 connect=0ms service=19ms status=403 bytes=3009 protocol=https 2022-01-19T23:01:08.714194+00:00 app[web.1]: Forbidden (Origin checking failed - chrome-extension://nfbjppodghgcapmokljafeckhkmbcogd does not match any trusted origins.)
Я не понимаю, что это происходит, потому что мои CORS_ALLOW_ALL_ORIGINS были установлены на true.
Я тоже пробовал с этим:
CORS_ORIGIN_WHITELIST = ["*"]
Я не понимаю, почему это происходит, когда я развернул веб-приложение, и почему оно нормально работает на моей локальной машине.
Я добавил Access-Control-Allow-Origin к своему ответу следующим образом:
response = JsonResponse({'added': added, 'contact': contact, 'ids': ids})
response["Access-Control-Allow-Origin"] = "*"
return response
Появилась та же ошибка.
Вот как я создаю запрос:
function makeRequest(value) {
url = 'https://my-app.herokuapp.com/smoke/add/';
let request = new Request(url, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'text/plain',
'X-CSRFToken': value.csrftoken,
},
body: JSON.stringify({
info: value,
}),
});
return request;
}
Я дважды проверил, что CSRF токен правильный, и это так, на самом деле, даже если я жестко закодировал его, выдается та же ошибка.
Честно говоря, я не знаю, что еще попробовать, и я благодарен за любую помощь или предложения попробовать, также если вам нужна дополнительная информация, я буду ждать этого сообщения.
Спасибо всем.