POST API路由无法正常工作!
在api.php
中检查这个简单的POST路由:
// This route doesn't work!
Route::post('/test', function (Request $request) {
return 'test';
});
它给了我这个错误:Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException
!
但如果我将请求动词更改为GET,那么GET和POST都可以正常工作!它让我发疯了!
// This route works on both, GET and POST!
Route::get('/test', function (Request $request) {
return 'test';
});
是的,如您所知,API路由根本不使用VerifyCsrfToken
中间件。所以中间件显然不是问题! php artisan cache:clear
也不是答案:(
有人有同样的问题吗?任何帮助都会非常感激。
答案 0 :(得分:2)
您需要确保您要连接的网址不会在幕后重定向...
e.g。在我自己的主机面板中,我已经设置在我的所有网址中添加WWW ...所以当我尝试通过POST方法访问https://example.com/app/public/api/test
网址时,我收到了MethodNotAllowedHttpException
错误!因为我的网址重定向到https://www.example.com/app/public/api/test
,并且在重定向时它会更改为GET!因为我没有设置任何GET路线......显然我得到了MethodNotAllowedHttpException
例外:)
https://
而不是http://
。因为它不仅安全,而且重定向可能再次发生,而你不知道它!怎么样?您自己的.htaccess
文件已更改或您的托管支持已为您更改,但您不记得(也请检查this answer):
# Let's force using SSL on all of our URLs and also forbid non-secure POSTs
RewriteEngine On
# Forbid non-secure POSTs
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ / [F,L]
# Force SSL
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
或CloudFlare之类的服务可帮助您提高安全性,并在您的CloudFlare面板中再次设置此设置后,将所有网址从http://
重定向到https://
你不记得了!