禁止(来源检查失败 - chrome-extension:// 不匹配任何受信任的来源。)

Forbidden (Origin checking failed - chrome-extension:// does not match any trusted origins.)

我正在尝试制作一个 Django API 应用程序,它允许我保存一些我将在浏览器上执行的操作(网络搜索、呼叫、消息发送等)并稍后查看所有这些在我自己的网站上,我做了一个简单的 chrome 扩展来做到这一点。

我已经将 Web 应用程序部署到 Heroku,当 CSRF 保护关闭时它工作正常,但是当我添加此保护时我收到 403 错误,因为:来源检查失败 - chrome-extension ://theIDofMyExtension 不匹配任何受信任的来源。)

我已经安装了 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,参考还说请求必须有一个与原始主机匹配的引用 header 所以我在 chrome 扩展请求中添加了一个 referer header 如下:

    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,
    }),
  });

我不知道还能尝试什么,所以即使您不确定响应,我也很乐意尝试您的解决方案,我真的不想在任何 post请求。

嗯,我很高兴,因为我已经解决了我自己的问题,我会把我所做的: 在这个问题中,添加到本地域 settings.py 上的 ALLOWED_HOST,所以我尝试做同样的事情,但添加了我的 chrome 扩展名的来源,它成功了!

ALLOWED_HOSTS = ["your-domain.herokuapp.com","chrome-extension://theIDofYourExtension"]