首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何关闭动态参数路由的csrf防护?

如何关闭动态参数路由的csrf防护?
EN

Stack Overflow用户
提问于 2019-08-17 19:05:51
回答 2查看 234关注 0票数 0

我有一个在URL末尾有一个动态参数的路由。在此路径中,我使用post方法获取从外部API发送的数据。由于外部接口发送post请求时出现419 page expired错误,需要对该路由关闭csrf防护。

相关路由:

代码语言:javascript
运行
复制
Route::group(['middleware' => ['auth:student']], function (){
    Route::post('Result', 'ExamController@Result')->name('exam.Result');
}

我的URL示例:

http://localhost.dev/student/Result?Id=N7utfGkwOLebxMWGA5iUC4S23jgRzW

我尝试将此代码添加到App\Http\MiddlewareVerifyCsrfToken文件中

代码语言:javascript
运行
复制
protected $except = [
'student/Result/*',
];

它不起作用。但当我尝试student/*时,它工作得很完美。然而,禁用所有student路径的csrf保护并不是我想要的。

我也尝试了这种方法,通过在this thread上获取参考

代码语言:javascript
运行
复制
Route::post('Result', [
      'uses' => 'ExamController@Result',
      'nocsrf' => 'true'
    ])->name('exam.Result');

这也不管用。

如何在此场景下关闭csrf防护?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-17 19:26:46

你在App\Http\Middleware犯了一个打字错误,而不是:

代码语言:javascript
运行
复制
protected $except = [
'student/Result/*',
];

您需要使用:

代码语言:javascript
运行
复制
protected $except = [
'student/Result',
];

此外,根据documentation,您可以指定需要排除的完整url:

代码语言:javascript
运行
复制
protected $except = [
'http://localhost.dev/student/Result',
];

请注意,您不需要在此处添加路由的参数部分( ? sign之后的所有内容,例如?Id=N7utfGkwOLebxMWGA5iUC4S23jgRzW)。

票数 1
EN

Stack Overflow用户

发布于 2019-08-17 19:14:29

试试这个(去掉斜杠和星号):

代码语言:javascript
运行
复制
protected $except = [
'student/Result',
];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57535700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档