Nginx允许跨域访问的配置问题
2017-06-23 16:01
435 查看
如今前后端分离的模式,越来越成为很多团队的选择,通过分离前后端的工作,是的双方更能关注于自己核心的工作领域,只需要通过相应的API接口进行交互。
前后端工作的分离带来的一个问题就是前后端在部署上分离的可能性,在部署上的分离又会触发浏览器安全机制——同源策略,从而导致不能访问非同域的资源。同样要解决跨域访问的问题,网上的解决方案也有很多,就是在跨域资源的响应中,加上允许跨域访问头信息即可。
添加头信息有几种方式:1. 直接修改代码,在HTTP响应中添加上对应的头信息;2. 使用代理服务器,在代理服务器返回响应的时候,再添加响应的头信息。
我们这里选择的是第2种方式——使用Nginx作为反向代理服务器。在使用Nginx作为代理服务器,并在配置中对应的location下添加上如下的设置:
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
通过这两个配置,前端就可以跨域访问数据接口了。但是在后续的使用过程中遇到一个问题,就是简单的GET请求都是可以跨域访问到数据的,但是POST请求的时候浏览器依然报错说跨域访问被禁止。后来发现,是因为在POST请求时,处理数据过程中发生了异常,导致了浏览器报跨域访问错误。但为什么会这样呢?
经查,这是因为Nginx的add_header指令并不能在HTTP返回码为50X的时候起作用,由于服务器处理逻辑出错,导致了Nginx返回内部服务器错误(500),这个时候add_header是没有起作用的,故会出现这样的问题。
大家可以参考这个Nginx文档:http://nginx.org/en/docs/http/ngx_http_headers_module.html
前后端工作的分离带来的一个问题就是前后端在部署上分离的可能性,在部署上的分离又会触发浏览器安全机制——同源策略,从而导致不能访问非同域的资源。同样要解决跨域访问的问题,网上的解决方案也有很多,就是在跨域资源的响应中,加上允许跨域访问头信息即可。
添加头信息有几种方式:1. 直接修改代码,在HTTP响应中添加上对应的头信息;2. 使用代理服务器,在代理服务器返回响应的时候,再添加响应的头信息。
我们这里选择的是第2种方式——使用Nginx作为反向代理服务器。在使用Nginx作为代理服务器,并在配置中对应的location下添加上如下的设置:
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
通过这两个配置,前端就可以跨域访问数据接口了。但是在后续的使用过程中遇到一个问题,就是简单的GET请求都是可以跨域访问到数据的,但是POST请求的时候浏览器依然报错说跨域访问被禁止。后来发现,是因为在POST请求时,处理数据过程中发生了异常,导致了浏览器报跨域访问错误。但为什么会这样呢?
经查,这是因为Nginx的add_header指令并不能在HTTP返回码为50X的时候起作用,由于服务器处理逻辑出错,导致了Nginx返回内部服务器错误(500),这个时候add_header是没有起作用的,故会出现这样的问题。
大家可以参考这个Nginx文档:http://nginx.org/en/docs/http/ngx_http_headers_module.html
相关文章推荐
- nginx配置允许跨域访问
- 用反向代理nginx proxy_pass配置解决ie8 ajax请求被拦截问题 ie8用nginx代理实现跨域请求访问 nginx405正向代理request_uri
- AJAX跨域轻松配置nginx允许多个域名跨域访问
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- VMware虚拟机上配置nginx后,本机无法访问问题
- nginx配置反向代理解决前后端分离跨域问题
- 配置nginx反向代理服务器,解决浏览器跨域调用接口的限制问题
- nginx配置反向代理解决前后端分离跨域问题
- nginx配置实例:只允许内部IP访问 禁止外部访问
- tomcat后端允许跨域访问的配置
- nginx配置反向代理解决前后端分离跨域问题
- C# ASP.NET MVC 配置允许跨域访问
- NGINX的CORS--跨域访问配置
- wordpress配置固定链接nginx访问404问题解决方法
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- VMware虚拟机上配置nginx后,本机无法访问问题
- Nginx由于TLS支持版本配置过低造成不能够正常访问Upstream服务器的问题
- wordpress配置固定链接nginx访问404问题解决方法
- 跨域问题可以通过配置nginx来解决
- 当几个应用访问nginx服务器,而这几个应用与nginx不在同一个域名的时候,可能出现跨域问题