nginx处理跨域问题

关于nginx 中遇到的一些跨域问题

1.常见跨域问题

  • nginx跨域主要涉及4个响应头
Access-Control-Allow-Origin

用于设置允许跨域请求源地址 (预检请求和正式请求在跨域时候都会验证)

Access-Control-Allow-Headers

跨域允许携带的特殊头信息字段 (只在预检请求验证)

Access-Control-Allow-Methods

跨域允许的请求方法或者说HTTP动词 (只在预检请求验证)

Access-Control-Allow-Credentials

是否允许跨域使用cookies,如果要跨域使用cookies,可以添加上此请求响应头,值设为true(设置或者不设置,都不会影响请求发送,只会影响在跨域时候是否要携带cookies,但是如果设置,预检请求和正式请求都需要设置)。不过不建议跨域使用(项目中用到过,不过不稳定,有些浏览器带不过去),除非必要,因为有很多方案可以代替。

  • 实例
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET';
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Access-Control-Allow-Credentials' 'true';

2. 浏览器带来的跨域问题

因为浏览器安全机制,会限制非安全上下文,比如使用公网(域名),则会出现一下报错内容

The request client is not a secure context and the resource is in more-private address space 'private'

处理方法:

1.ssl证书

2.反向代理,应用服务器上去做个反向代理转发到报此问题的资源服务器