本文作者:DurkBlue

Nginx 指定多个域名进行跨域请求配置的文件

Nginx 指定多个域名进行跨域请求配置的文件摘要: nginx指定多个域名跨域请求配置什么是跨域假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提...

nginx指定多个域名跨域请求配置

什么是跨域


假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据。一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误,"跨域"也就以此由来。跨域的出现主要原因还是安全的限制(同源策略,也就是JavaScript或者Cookie只能够访问同域下的内容),因此在日常的项目开发中会不可避免的出现跨域操作。 和打多数跨域的解决方案一样,JSONP是大多数前端同事的选择,但是JSONP只支持GET请求。但是如果项目功能需要改成支持POST请求,那么因为这种情况下传输的数据量较大,GET形式是搞不定的。此时JSONP并不是一个很好的选择。此时就需要使用CORS(跨域资源共享,Cross-Origin Resource Sharing).


一般跨域会出现的问题


一般来说,跨域会出现如下的问题:

Nginx 指定多个域名进行跨域请求配置的文件 第1张

实际项目中出现的问题


先前配置中有如下的域名:

Nginx 指定多个域名进行跨域请求配置的文件 第2张

browser.in.meizu.com是向客户端或者是H5提供接口访问的后台域名,browser-res.in.meizu.com,v-res.in.meizu.com都是提供给h5端的入口访问域名。 先前在nginx中有如下的配置:

Nginx 指定多个域名进行跨域请求配置的文件 第3张

如果设置了这个配置,那么如果前端的入口是browser-res.in.meizu.com,那么它是可以访问到browser.in.meizu.com提供的接口的。 前端同学用了v-res.in.meizu.com这个域名作为h5端访问入口,访问browser.in.meizu.com,由于此时nginx并没有相关的配置,因此出现了如下的问题:

Nginx 指定多个域名进行跨域请求配置的文件 第4张

很明显,这个问题并不是说原程序没有设置"add_header Access-Control-Allow-Origin:"。 我们看前面的nginx中的 配置,已经设置了 browser-res.in.meizu.com 可以访问 browser.in.meizu.com。但是现在的一个问题是前端的同 学使用了 "v-res.in.meizu.com" 这个域名作为前端的入口,所以就出现了以上的问题:browser-res.in.meizu.com是 可以访问browser.in.meizu.com。但是v-res.in.meizu.com不可以访问browser.in.meizu.com.但是当时考虑问题只是 认为是简单的跨域问题,没有考虑到在nginx中的配置,所以就简单的使用了过滤器来进行解决.

此篇文章由DurkBlue发布,麻烦转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2022-04-02
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论取消回复

快捷回复:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog

评论列表 (暂无评论,1249人围观)参与讨论

还没有评论,来说两句吧...