【问题标题】:Disable csrf toke for some routes in laravel 5.4? Not working [duplicate]在 laravel 5.4 中为某些路由禁用 csrf 令牌?不工作[重复]
【发布时间】:2018-04-04 00:44:28
【问题描述】:

我正在为我的网站制作一个 API,API 将用于获取、发布、删除一些数据,但是要发布,需要 csrf 令牌,该令牌无法从第三方网站生成,因此我必须禁用 csrf 令牌一些路线。在文档中说要在 verifycsrftoken.php 中添加以下内容:

protected $except = [
    'leads',
    'leads/*'
];

但这在 laravel 5.4 中不起作用。 这是我的示例路线:

Route::post('leads/{id}', ['as'=>'leads']);

任何帮助将不胜感激。

【问题讨论】:

  • 应该可以的。您仍然收到 CSRF 异常?
  • 它说'MethodNotAllowedHttpException'
  • 这可能是 POST/GET 不匹配。你的表单标签是什么样的?
  • @AhmadRza 这不是 CSRF 问题。这是一个单独的问题。
  • @ceejayoz 这不是那个问题的重复,他们的背景和我的完全不同......

标签: php laravel laravel-5 laravel-5.4


【解决方案1】:

您发布的代码应该可以工作。

正如您在评论中所说,错误是MethodNotAllowedHttpException。当您尝试访问类型错误的 url 时会引发该错误。为了通过 POST 发送表单,您需要在表单标签中注明

<form method="POST" action="{{ url('leads/'.$lead->id) }}>

并在表单中添加 csrfToken

{!! csrf_field() !!}

【讨论】:

  • 命令 app/Http/kernal.php in \App\Http\Middleware\VerifyCsrfToken::class 不需要使用csrf token
  • 对不起,我说我从第三方网站调用 api,第三方网站无法为我的主网​​站生成 csrf 令牌,我通过 ajax 调用 api..
  • 确保您是从 POST 而不是 GET 调用 API。
  • 已解决,我只是通过输入 url 检查它是否工作,它不是,但使用 ajax,它工作......
  • 在浏览器的 URL 上键入将通过 GET 执行请求。您可以使用 Postman 检查 POST 路由。
猜你喜欢
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 2015-10-22
  • 2018-01-04
  • 1970-01-01
  • 2018-07-20
  • 2017-07-30
相关资源
最近更新 更多