LEN

Nginx配置跨域-http请求方法OPTIONS
介绍下场景 前端ajax 请求接口 前 进行了 options 请求 后端php 认为options 是post ...
扫描右侧二维码阅读全文
29
2018/06

Nginx配置跨域-http请求方法OPTIONS

介绍下场景 前端ajax 请求接口 前 进行了 options 请求
后端php 认为options 是post 请求 所有导致 重复请求问题.

解决方案 判断options 请求就 返回206

两种方式解决

  1. php

    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');
    exit();

    }

  2. nginx

    location / { 
    
        if ( $request_method = 'OPTIONS' ) { 
            add_header 'Access-Control-Allow-Origin' "$http_origin";
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since,Content-Type';
            add_header 'Content-Length' 0;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            return 206;
        }   
    
        ....
    

使用nginx 比较靠谱

http OPTIONS解释

1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。支持请求方法与http协议版本及web服务器配置有关
2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。
3、http返回正常状态码为206

最后修改:2018 年 07 月 06 日 02 : 49 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论