loading
Ajax请求跨域问题比较常见,对于接口服务器来讲,一般设置Access-Control-Allow-Origin:*便能解决。但对于Preflighted Request(带预检的跨域请求)来讲,光设置Access-Control-Allow-Origin:*不够。那么什么情况下会涉及到带预检的跨域请求呢?
设置了自定义header字段的请求,便会涉及到Preflighted Request。
此时,如果仅仅是接口端设置Access-Control-Allow-Origin:*,仍然会报跨域错误。那么该怎么解决呢?
以Nginx服务器为例:
在location /{}中添加OPTIONS配置即可,代码如下:
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'OPTIONS';
add_header 'Access-Control-Allow-Headers' 'time,token,secret'; //此处是自定义请求头列表
return 200;
}
希望该经验对你有所帮助。