【问题标题】:How to handle laravel csrf when sending a Guzzle POST request?发送 Guzzle POST 请求时如何处理 laravel csrf?
【发布时间】:2016-07-21 07:55:28
【问题描述】:

我正在尝试使用 Guzzle 向远程 Laravel 服务器发送 POST 请求。问题是由于默认的 Laravel csrf 中间件,请求总是会被拒绝。

该请求用于将用户从主服务器上传的图像文件转发到用于存储图像的服务器。

有没有办法使用 Guzzle 设置正确的令牌?

如果不是,关闭图像服务器的 csrf 中间件是否安全,因为它只接收来自另一台服务器的请求?

【问题讨论】:

    标签: php laravel laravel-5.1 guzzle


    【解决方案1】:

    由于您说的是远程 Laravel 服务器,因此不能期望 CSRF 令牌。 CSRF 令牌用于由相同 laravel 代码生成的网页。

    1. 您可以在/app/Http/Midddleware/VerifyCsrfToken.php 关闭此路由的 CSRF 令牌,方法是更新:

    受保护的 $except = ['your-image-route-url'];

    1. 通过 API 令牌处理身份验证(授权:Bearer / 或 Passport)

    【讨论】:

      【解决方案2】:

      您可以在发送请求之前生成一个 CSRF 令牌,并将其作为 X-CSRF-Token 添加到标头中。

      【讨论】:

      【解决方案3】:

      我知道这已经很老了,但简单的答案是,至少对于 laravel 5.5 LTS,您无法成功验证此请求。

      所以,如果你想处理你的 POST 请求,要么将正确的令牌传递给它(这在你的 guzzle 请求中是不可能的),要么从 midlleware VerifCsrfToken 中删除 csrf 检查。

      您可以通过在 /app/Http/Middleware/VerifyCsrfToken.php 文件中包含到 protected $except 的路由来做到这一点...

      除非您的请求来自其他网站,否则您可能做错了什么......

      【讨论】:

        猜你喜欢
        • 2020-07-14
        • 2018-03-21
        • 2018-11-02
        • 1970-01-01
        • 2021-11-25
        • 2014-04-10
        • 2022-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多