在 laravel 5.4 中为某些路由禁用 csrf 令牌?不工作[重复]
Posted
技术标签:
【中文标题】在 laravel 5.4 中为某些路由禁用 csrf 令牌?不工作[重复]【英文标题】:Disable csrf toke for some routes in laravel 5.4? Not working [duplicate] 【发布时间】: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 这不是那个问题的重复,他们的背景和我的完全不同...... 【参考方案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 路由。以上是关于在 laravel 5.4 中为某些路由禁用 csrf 令牌?不工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.4 的路由中使用 DELETE 方法
为某些路由禁用 vue-router?或者如何运行 SPA 后端和非 SPA 前端?
Laravel 5.4:从 CSRF 验证中排除带有参数的路由