我以前从未开发过 Chrome 扩展程序,目前正在为我的 Django 应用程序开发 Chrome 扩展程序(具有链接提交功能)。当我尝试使用扩展程序提交链接时,出现以下错误:
'POST http://127.0.0.1:8000/add_link_from_extension 403 (FORBIDDEN)'
这可以通过在 postdata JSON 中传递 csrfmiddlewaretoken 来解决,但是,显然我不能这样做
<script>var csrfmiddlewaretoken = "{{ csrf_token }}"</script>
在 Chrome 扩展的 html 文件中。如何将 csrf_token 从 Django 传递到 Chrome 扩展的 JavaScript?或者,还有其他方法可以解决这个问题吗?以下是 Chrome 扩展中 JS 代码的相关部分:
postdata = {
"url":url.value
//"csrfmiddlewaretoken": csrfmiddlewaretoken
};
$.post('http://' + "127.0.0.1:8000" + '/add_link_from_extension', postdata, success);
您可以尝试使用 CSRF 令牌设置 cookie(请参阅:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax)。或者,简单地用以下内容装饰您的视图csrf_exempt https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt.
就我个人而言,我发现这两种方法都不是最佳的。实际上,如果您打算通过浏览器扩展之类的方式允许外部访问您的网站,则应该设置并使用 API,特别是,如果您打算允许任何类型的写入访问,则应该添加具有 OAuth 之类的身份验证层。django-tastypie https://github.com/toastdriven/django-tastypie是一个很好的嵌入式 API 解决方案,您可以尝试,它支持开箱即用的 OAuth。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)