跨域的时候总会碰上各种各样的问题,这就是其中一种情况

检查一下,两次请求分别的 Request Method: 因为是跨域请求,客户端发先发送一个OPTIONS 请求 Preflighted Requests是CORS中一种透明服务器验证机制。预检请求首先需要向另外一个域名的资源发送一个 HTTP OPTIONS 请求头,其目的就是为了判断实际发送的请求是否是安全的。

很有可能是这个问题,我现在用axios 作为我的网络请求库,也遇到了这个问题,跨域访问的时候 ,都会先发送一个OPTIONS请求,用来判断接下来的请求是否安全和被允许

我现在的做法是,在index.php 入口文件中,检测,是否为OPTIONS 请求,如果是就返回一个状态具体代码

1
2
3
4
5
6
if ($_SERVER['REQUEST_METHOD']=='OPTIONS') {
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
    return;
}

原文