我以前从未开发过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);发布于 2012-07-24 05:30:26
您可以尝试使用CSRF令牌设置cookie (参见:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax)。或者,简单地用csrf_exempt装饰你的视图。
就个人而言,我发现这两种方法都不是最优的。实际上,如果你打算通过浏览器扩展之类的东西来允许外部访问你的站点,你应该设置并使用一个API,尤其是,如果你打算允许任何类型的写访问,你应该添加一个像OAuth这样的验证层。django-tastypie是一个很好的插件应用编程接口解决方案,你可以尝试一下,它开箱即用地支持OAuth。
https://stackoverflow.com/questions/11620540
复制相似问题