Rod*_*yes 4 django ajax heroku google-chrome-extension django-rest-framework
我正在尝试制作一个 Django API 应用程序,它允许我保存将在浏览器上执行的一些操作(网络搜索、呼叫、消息发送等),并稍后在我自己的网站上查看所有这些,我做了一个简单的 chrome 扩展就可以做到这一点。
我已经将 Web 应用程序部署到 Heroku,并且在 CSRF 保护关闭时工作正常,但是当我添加此保护时,我收到 403 错误,因为:源检查失败 - chrome-extension://theIDofMyExtension 与任何受信任的源不匹配。)
我已经安装了 django-cors-headers 库并进行了所有必要的设置(它在我自己的计算机上运行):https ://pypi.org/project/django-cors-headers/
我将 chrome-extension origin 添加到 CSRF_TRUSTED_ORIGINS 列表中,如下所示:
CSRF_TRUSTED_ORIGINS = ['chrome-extension://nfbjppodghgcapmokljafeckhkmbcogd']
我想不起作用,因为这个参考: https: //docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins说来源必须是 https 或 http,该参考还说请求必须有一个与原始主机匹配的引用标头,因此我向 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,
}),
});
Run Code Online (Sandbox Code Playgroud)
我不知道还能尝试什么,所以即使您不确定响应,我也会很乐意尝试您的解决方案,我真的不想在任何发布请求上使用 csrf_excempt 。
好吧,我很高兴,因为我已经解决了自己的问题,我将把我所做的事情:在这个问题中添加到本地域的settings.py上的ALLOWED_HOST,所以我尝试做同样的事情,但添加了我的chrome扩展的起源成功了!
ALLOWED_HOSTS = ["your-domain.herokuapp.com","chrome-extension://theIDofYourExtension"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5091 次 |
| 最近记录: |