如何在laravel中的API路由上禁用CSRF验证?
在API routes
我通过POST和GET方法调用函数。获取方法返回数据,但POST方法抛出方法未找到异常。
以下是routes/api.php
Route::post('hellopostapi', function() {
return json_encode( 'we are getting POST response');
});
Route::get('helloget', function() {
return json_encode( 'we are getting GET response);
});
对于GET电话,我按预期收到回复。 对于POST我得到了这个例外
“message”:“”, “异常”: “的Symfony \元器件\ HttpKernel \异常\ MethodNotAllowedHttpException”,
"file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php", "line": 255, "trace": [ { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php", "line": 242, "function": "methodNotAllowed", "class": "Illuminate\\Routing\\RouteCollection", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php", "line": 176, "function": "getRouteForMethods", "class": "Illuminate\\Routing\\RouteCollection", "type": "->" },
我还在verifycsrf.php中添加了api路由,根据它应该工作的文档,不幸的是它不适合我。
这是我的verifiycsrf.php
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'api/*',
];
}
答案 0 :(得分:0)
检查您要发布的表单方法,很可能该方法已经在路由文件中使用GET方法,您已将其配置为期望POST方法
答案 1 :(得分:0)
深入研究这一点,我发现这绝不是一个laravel问题,而是由于HTTP到HTTPS重定向导致的。 将http更改为https后,问题似乎得到了重新解决。 :)