热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Phoenix-无效的CSRF(跨站点伪造保护)令牌错误

如何解决《Phoenix-无效的CSRF(跨站点伪造保护)令牌错误》经验,为你挑选了2个好方法。

尝试更新(或创建)记录时,我收到无效的CSRF令牌错误.我正在使用Elixir v1.0.3,Erlang/OTP 17 [erts-6.3]和Phoenix v0.8.0(我想,我不知道如何查看Phoenix的版本).我正在创建一个Web应用程序,主要遵循Phoenix指南和Elixir Dose Jobsite示例资源.但是,当我尝试从html表单发布信息时,我收到无效的CSRF令牌错误.根据错误中给出的建议,我将'x-csrf-token':csrf_token添加到操作中.

edit.html.eex:

Edit Directory

" method="post">
...

但是我收到以下错误:

[error] #PID<0.579.0> running Ainur.Endpoint terminated
Server: localhost:4000 (http)
Request: POST /config/directories/2?x-csrf-token=
** (exit) an exception was raised:
    ** (Plug.CSRFProtection.InvalidCSRFTokenError) Invalid CSRF (Cross Site Forgery Protection) token. Make sure that all your non-HEAD and non-GET requests include the csrf_token as part of form params or as a value in your request's headers with the key 'x-csrf-token'
        (plug) lib/plug/csrf_protection.ex:54: Plug.CSRFProtection.call/2
        (ainur) web/router.ex:4: Ainur.Router.browser/2
        (ainur) lib/phoenix/router.ex:2: Ainur.Router.call/2
        (plug) lib/plug/debugger.ex:104: Plug.Debugger.wrap/3
        (phoenix) lib/phoenix/endpoint/error_handler.ex:43: Phoenix.Endpoint.ErrorHandler.wrap/3
        (ainur) lib/ainur/endpoint.ex:1: Ainur.Endpoint.phoenix_endpoint_pipeline/2
        (plug) lib/plug/debugger.ex:104: Plug.Debugger.wrap/3
        (phoenix) lib/phoenix/endpoint/error_handler.ex:43: Phoenix.Endpoint.ErrorHandler.wrap/3

据我所知(对Elixir,Phoenix和HTML来说是新手),"action"本质上是一个路径,我在其中放置的任何参数都将找到返回应用程序的路径.事实上,我发现x-csrf-token =""被传递回路由器,因此@csrf_token必须不正确.我不确定csrf_token的确切位置,所以我不知道如何引用它(或者我可能完全错误).

任何想法将不胜感激.



1> Tsuharesu..:

在凤凰城的0.13版本上你可以做到


因为在档案中web/web.ex有这个功能的导入.



2> Tayler..:

作为自v0.10.0以来的另一种解决方案,您可以让Phoenix为您注入CSRF输入.

升级指南示例:

<%= form_tag("/hello", method: :post) %>
... your form stuff. input with csrf value is created for you.

这将输出表单标签和一些输入标签,包括_csrf_token一个.结果将如下所示:

    
    

form_tagdocs:"对于'post'请求,表单标签将自动包含一个名为_csrf_token的输入标签."


推荐阅读
author-avatar
dnjaskn
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有