因为在进行跨域请求的时候,前端会先options请求接口,去试探是否支持跨域,支持跨域之后,在进行正式的post请求添加。
解决方法:
(我的路由写的是any 没有请求限制,请求接口的时候post限制post请求 get限制get请求就行了)
请求做限制,options请求不执行接口功能。
if (strtolower($_SERVER['REQUEST_METHOD'] == 'options')){
exit();
}
首先,跨域请求分为两种,一种是简单请求,即get
请求和post
请求(不带多余的请求头),这种情况下,浏览器会直接请求,在有允许跨域的头的情况下,予以显示。(这里并不是说没有跨域头服务器就不返回数据了,数据是照常返回的,但是浏览器拦截了返回数据。)
另一种呢是复杂请求,即非get
或post
请求,或者是有了自定义头的请求。这种情况下,浏览器会首先发送一个options
请求(预请求),来确是否允许跨域。在服务器返回的跨域条件都允许之后,浏览器才会发送正式请求。
debug_backtrace() 打印栈轨迹
route:list 看了一下,有没有 options 请求
php artisan route:list --method options