Forbidden (Проверка происхождения не удалась - chrome-extension:// не соответствует ни одному доверенному источнику).

Прошло два дня, а я все еще застрял в этом, помощь будет оценена по достоинству, сначала я объясню, что я пытаюсь сделать:

Я пытаюсь сделать приложение Django API, которое позволяет мне сохранять некоторые действия, которые я буду выполнять в браузере (веб-поиск, звонки, отправка сообщений и т.д.) и просматривать все это позже на моем собственном веб-сайте, для этого я сделал простое расширение chrome.

Я уже развернул веб-приложение в heroku, и оно работает нормально, когда защита CSRF отключена, но когда я добавляю эту защиту, я получаю ошибку 403, потому что: Origin checking failed - chrome-extension://theIDofMyExtension does not match any trusted origins.)

Я уже установил библиотеку django-cors-headers и произвел все необходимые настройки (это работало на моем собственном компьютере): https://pypi.org/project/django-cors-headers/

Я добавил в список CSRF_TRUSTED_ORIGINS происхождение chrome-extension следующим образом: CSRF_TRUSTED_ORIGINS = ['chrome-extension://nfbjppodghgcapmokljafeckhkmbcogd']

Я предполагаю, что это не работает, потому что эта ссылка: https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins говорит, что происхождение должно быть https или http, ссылка также говорит, что запрос должен иметь заголовок referer, который соответствует хосту происхождения, поэтому я добавил заголовок referer к запросу расширения chrome следующим образом:

    let request = new Request(url, {
    method: 'POST',
    credentials: 'include',
    headers: {
      'Content-Type': 'text/plain',
      'X-CSRFToken': value.csrftoken,
      'X-Referer': 'tracking-leads.herokuapp.com',
    },
    body: JSON.stringify({
      info: value,
    }),
  });

Я не знаю, что еще можно попробовать, так что даже если вы не уверены в ответе, я буду рад попробовать ваше решение, я действительно не хотел использовать csrf_excempt на любой запрос почты.

Спасибо за помощь.

Ну, я счастлив, потому что я решил свою собственную проблему, и я буду размещать то, что я сделал: В этом вопросе добавьте в ALLOWED_HOST в settings.py локальный домен, поэтому я попытался сделать то же самое, но добавив происхождение моего расширения chrome, и это сработало!

ALLOWED_HOSTS = ["your-domain.herokuapp.com","chrome-extension://theIDofYourExtension"]
Вернуться на верх