Redirect is not allowed for a preflight request

Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

  • 浏览器CORS预检请求
  • 解决上述问题的方案
  • 实际生产环境遇到的问题,以及解决方案

)

浏览器CORS预检请求

在浏览器请求非同源接口时,会向服务器发送预检请求,请求方法为OPTIONS,用来检测服务器所支持的请求方法。在预检请求时,不会携带自定义的请求头信息,而且不允许重定向。

解决上述问题的方案

删除在预检请求中可能会产生的重定向

实际生产环境遇到的问题,以及解决方案

# 跨域
add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS' always;
add_header Access-Control-Allow-Headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With,Token,x-access-token' always;

# 限制请求头
# 可以利用flag,来做一些复杂的逻辑处理
set $flag 0;
if ($request ~ 'OPTIONS'){
    set $flag "${flag}2";
}
if ($flag ~ "0"){
    rewrite "." "https://www.baidu.com/" break;
}

你可能感兴趣的:(Nginx,跨域,预检请求)