简介
在日常学习和工作开发中,需要请求两个不同配置的请求经常存在,本文介绍如果还使用Nginx配置解决其跨域问题
相关理论
首先需要了解什么是跨域,下面的两个文章说的很好,请仔细阅读后,然后自己去动手尝试配置,将有深刻的体会
- 不要再问我跨域的问题了
- 【译】3种解决CORS错误的方式与Access-Control-Allow-Origin的作用原理
- Nginx实战(九)跨域配置(解决CORS报错)
- nginx代理跨域配置add_header Access-Control-Allow-Origin 不生效的解决方法
总结来说:
- 跨域是浏览器的安全策略造成的,但其也是必要的,不能为了方便而放弃安全性
- 跨域是不同源的请求导致的:IP、域名、端口等不同都会造成跨域
- 跨域的判断是由请求头和响应头的相关字段进行判断的,这个是设置的基础
那解决方法目前看来有三个:
- 前端层面自己解决:前端请求时自己进行代理
- 网关层面进行解决:在nginx、kong同统一网关中进行配置解决
- 服务后台解决:在Go、Java Web中进行配置解决,经典的Cors配置
但注意的是,有时候是只能使用一样跨域解决方式的,最终的效果是需要保证最后前端收到的请求头符合规范,特别是下面这个头:
Access-Control-Allow-Origin: *
如果返回的响应头里面少了会跨域,但多了,比如返回了两个相同的,也会跨域
注:在实际开发中,如果发生跨域,排查的第一步就是看看响应头里面是否返回了正确的数据&#