关于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.反向代理,应用服务器上去做个反向代理转发到报此问题的资源服务器