栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx处理跨域问题

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx处理跨域问题

xx项目有个需求,我们的web项目首页需要展示“实时天气”,但提供天气数据的接口是来自业主那边的一个独立项目,且部署在其他服务器上。

现场环境项目地址:http://10.5.11.19:8089/AVMS

天气服务接口地址:http://10.5.15.8:8080/dam/service/weather?token=QdSEhR2d&appKey=ff808081783a60d001785da57230003d&endtime=202106221614


如果我们在前端直接发ajax请求调用接口,浏览器就会限制跨域访问,导致我们调用不了接口。

 

跨域问题正常来说都是提供接口的服务端把跨域相关的配置处理好(设置请求头允许跨域访问),别人跨域调用接口时就不会被浏览器拦截。

 

但由于接口提供者是业主方,让他们改他们不改也没办法,所以只能由我们自己想办法处理跨域问题,网上查了资料,发现有2个比较简单的方案

方案1:Jsonp解决ajax跨域问题

Jsonp具体实现方式和原理百度上有,代码上看其实就是换了一种发ajax请求的方式,简单便捷、干净卫生。

*这个方法亲测可以解决跨域问题,但是在接口需要的参数超过2个的时候,这个方法就不管用了(比如调用天气服务的接口,需要带多个参数),具体原因不清楚没百度到,所以只有考虑其他方案

 

方案2:使用Nginx做代理(这种方法并不是处理跨域问题的最优解,加了一个组件会增加以后的维护成本)

概括下就是我们项目访问接口时,ip端口写Nginx服务的10.5.11.19:80(这儿需要配置Nginx允许跨域,否则访问Nginx也会有跨域问题)

然后Nginx代替你访问天气服务接口的原ip端口10.5.15.8:8080,然后将返回值返回给你

这里就直接帖配置文件了

 

Nginx配置好之后,我们在代码里的ajax请求url,就改为下面这样即可

http://10.5.11.19/weather/service/weather?token=token&appKey=ff808081783a60d001785da57230003d&location=WW0GEYRDT0F3

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号