zoukankan      html  css  js  c++  java
  • 接口一次请求会同时执行两次

    因为在进行跨域请求的时候,前端会先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                                
    
  • 相关阅读:
    PTA 程序设计题(数据结构第一章)
    (考研)计算机组成原理之计算机系统概论
    C语言复习
    vs2019 scanf 解决 C4996问题
    数据结构之链表
    数据结构之表、栈、队列
    数据结构之算法分析
    数据结构泛型之初接触
    数据结构之递归
    学习参考
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/15407225.html
Copyright © 2011-2022 走看看