PUT请求 出现401,且Request Method变成了OPTIONS。No 'Access-Control-Allow-Origin' header

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

 

发送PUT的请求,出现了OPTIONS请求的跨域错误,这是为什么呢?

原来是跨域的时候,对于PUT、POST、DELETE请求,浏览器会先发起一个options请求进行测试连接。当options请求返回200之后才会正式发起PUT、POST、DELETE请求。

所以解决这个问题就是保证options请求测试连接是正常的。

解决方法:

1.如果使用nginx,则配置对options请求测试连接的处理


        location ^~ /manage-api/ {

            if ($request_method = 'OPTIONS') {

                add_header Access-Control-Allow-Origin $http_origin always;
                add_header Access-Control-Allow-Credentials true always;
                add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS' always;
                add_header Access-Control-Allow-Headers 'Authorization,X-Requested-With,Content-Type,Origin,Accept' always;
                add_header Access-Control-Max-Age 3600;
                add_header Content-Length 0;
                return 200;
            }

           proxy_pass   http://localhost:8068;

    }

2.也可以在代码中对OPTIONS请求进行过滤,直接返回200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值