首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >后403禁止在后台使用Django进行Chrome扩展

后403禁止在后台使用Django进行Chrome扩展
EN

Stack Overflow用户
提问于 2012-07-24 05:07:50
回答 1查看 1.8K关注 0票数 2

我以前从未开发过Chrome扩展,目前正在为我的Django驱动的应用程序开发Chrome扩展(具有链接提交功能)。当我尝试使用扩展来提交链接时,我得到了以下错误:

代码语言:javascript
复制
'POST http://127.0.0.1:8000/add_link_from_extension 403 (FORBIDDEN)'

这可以通过在postdata JSON中传递csrfmiddlewaretoken来解决,但是,显然我不能这样做

代码语言:javascript
复制
<script>var csrfmiddlewaretoken = "{{ csrf_token }}"</script>

在来自Chrome扩展的html文件中。如何将csrf_token从Django传递到Chrome扩展的JavaScript?或者,有没有其他方法来解决这个问题?以下是来自Chrome扩展的JS代码的相关部分:

代码语言:javascript
复制
postdata = {
        "url":url.value
        //"csrfmiddlewaretoken": csrfmiddlewaretoken 
    };
$.post('http://' + "127.0.0.1:8000" + '/add_link_from_extension', postdata, success);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11620540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档