gpt4 book ai didi

ruby-on-rails - 从浏览器外部到 Rails 服务器的请求的 CSRF token 问题

转载 作者:可可西里 更新时间:2023-11-01 16:19:22 25 4
gpt4 key购买 nike

我需要从浏览器外部发出 HTTP POST 请求,但 Rails 后端不接受身份验证(错误 401)。我知道在这种情况下我需要传递 CSRF token ,但它不起作用。

当我通过浏览器上的表单发出请求时,它按预期工作,但是当我尝试从浏览器外部(例如使用 curl)模拟相同的请求(在 header 和 cookie 方面)时,身份验证不起作用。

两个小的改变让我在没有浏览器的情况下也能成功:(1) 关闭 protect_from_forgery,它验证 CSRF 或 (2) 使用 GET 而不是 POST 请求。在这两种情况下,传递 cookie 就足够了。这意味着问题肯定与 CSRF 相关。

所以,我的问题是:如何在不使用浏览器的情况下将受 CSRF 保护的 HTTP POST 发送到 Rails 服务器?

澄清一下,该过程分为三个步骤:

  1. 登录:返回一个cookie来标识 session ;

  2. :GET 请求返回 CSRF token 以供稍后使用(使用 cookie);

  3. 创建:POST 请求提交我要创建的信息(同时使用 session cookie 和 CSRF token )。

唯一失败的是第三步。

最佳答案

假设您的 CSRF token 是基于 cookie 的,那么您用来发出请求的程序需要跟踪 cookie。查看 curl 中的 --cookie-jar 选项。

关于ruby-on-rails - 从浏览器外部到 Rails 服务器的请求的 CSRF token 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6219208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com