我添加了例外:
protected $except = [
'pay/finish'
];
但是我仍然得到MethodNotAllowedException
路由在web.php
中定义
Route::post('/pay/finish', ['as' => 'pay.finish', 'uses' => 'PaymentController@finish']);
发布请求来自另一个域。
您通常不会从无效的CSRF令牌中获得MethodNotAllowedException
。
但是,假设CSRF令牌是问题,您可以将路由从web.php
移至api.php
。请注意,这会将前缀api/
添加到URL。
检查CSRF令牌的中间件已在您的内核中应用于web.php
中的所有路由,但不应用于api.php
中的所有路由>
您可以通过查看App\Http\Kernel
文件并从以下位置注释掉\App\Http\Middleware\VerifyCsrfToken::class
来验证CSRF检查是否是问题:>
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ];
如果您的路由可以使用,那么它是CSRF,您可以将路由移动到API路由文件,并使用api前缀在
api/pay/finish
处将其命中。如果没有,那么我建议您查看正在调用的路由,并检查是否调用了正确的http方法。肯定是发送发帖请求吗?您是否具有
_method' input specified in your form that Laravel checks for
POSTrequests to mutate them to
PUTor
PATCH`的编辑路径?