Как разрешить 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 токен правильный, и это так, на самом деле, даже если я жестко закодировал его, выдается та же ошибка.

Честно говоря, я не знаю, что еще попробовать, и я благодарен за любую помощь или предложения попробовать, также если вам нужна дополнительная информация, я буду ждать этого сообщения.

Спасибо всем.

Вернуться на верх