Swift发送POST请求到Laravel后端返回Method Not Allowed如何解决
问题原因与解决方案
你遇到的405 Method Not Allowed错误主要由两个核心错误导致,还有几个可能的附加问题需要排查:
核心错误1:请求对象调用错误
你所有的请求配置(POST方法、请求头、请求参数)都写在了URLRequest对象里,但发起请求的时候调用的是session.dataTask(with: url),直接传入了原始URL,系统会默认用GET方法发起请求,和后端要求的POST方法不匹配,自然返回405。
修复方式:把请求调用改成传入你配置好的request对象:
let task = session.dataTask(with: request) { (data, urlResponse, error) in // 原有逻辑保持不变 }
核心错误2:请求路径和后端路由不匹配
你Laravel里定义的POST路由是SignIn,但Swift代码里请求的路径是/Api/V1/Verify,两个路径完全不匹配,Laravel找不到对应的POST路由就会返回405。
修复方式:
- 先在Laravel项目根目录执行
php artisan route:list,查看实际生成的路由完整路径 - 把Swift代码里的URL改成和后端路由一致的路径,比如你路由定义的是
SignIn,完整路径应该是http://192.168.xxx.xxx/BARI/public/api/v1/SignIn
其他需要排查的问题
- 确认你的路由写在
routes/api.php文件中:web.php默认会校验CSRF令牌,POST请求未携带令牌会报错,api.php的路由默认跳过CSRF校验,还自带api前缀 - 注意路由大小写:Laravel路由区分大小写,请求路径的大小写要和路由定义完全一致,比如路由写的是
SignIn,请求就不能写成signin - 如果你已经给路由组加了
Api/V1的前缀,路由定义里不需要重复写前缀,否则会导致路径重复
内容的提问来源于stack exchange,提问作者Mohammed Riyadh
相关产品推荐
相关产品推荐

