接口一次请求会同时执行两次

因为在进行跨域请求的时候,前端会先options请求接口,去试探是否支持跨域,支持跨域之后,在进行正式的post请求添加。

解决方法:

(我的路由写的是any 没有请求限制,请求接口的时候post限制post请求 get限制get请求就行了)

请求做限制,options请求不执行接口功能。

if (strtolower($_SERVER['REQUEST_METHOD'] == 'options')){
	exit();
}

首先,跨域请求分为两种,一种是简单请求,即get请求和post请求(不带多余的请求头),这种情况下,浏览器会直接请求,在有允许跨域的头的情况下,予以显示。(这里并不是说没有跨域头服务器就不返回数据了,数据是照常返回的,但是浏览器拦截了返回数据。)
另一种呢是复杂请求,即非getpost请求,或者是有了自定义头的请求。这种情况下,浏览器会首先发送一个options请求(预请求),来确是否允许跨域。在服务器返回的跨域条件都允许之后,浏览器才会发送正式请求。

debug_backtrace() 打印栈轨迹

route:list 看了一下,有没有 options 请求

php artisan route:list --method options                                
posted @ 2021-10-14 16:21  caibaotimes  阅读(1880)  评论(0编辑  收藏  举报