ajax请求跨域问题的解决方案

本文记录了一次ajax跨域请求问题,因请求地址和浏览器地址不一致,受浏览器安全策略的同源策略影响,请求代码显示200但无返回结果。文中给出了几种解决方案,如jsonp、httpClient转发、设置响应头、使用nginx或zuul搭建API接口网关等。

记录一次ajax跨域请求,由于请求地址和浏览器地址不一致,导致由于浏览器的安全策略引起的同源策略问题,会显示请求代码(200),但是无返回结果,对此问题总结一下几条解决方案.

问题产生原因:请求地址和浏览器地址不一致,由于浏览器的安全策略引起的同源策略问题.

解决方案:

       1.使用jsonp解决跨域问题(以前的文章有示例可以看一看,不推荐,因为只支持get,不支持post)

       2.使用httpClient进行转发(不推荐,效率低,会发送两次请求)-->这种方式就是你访问自己的API,自己在API中使用httpClient请求你Ajax要请求的地址,然后对结果进行处理返回,故是两次请求.

       3.设置响应头允许跨域(可以推荐),可以快速解决问题

          在服务端设置response.setHeader("Access-Control-Allow-Origin", "*");即可。
          Access-Control-Allow-Origin:* 表示允许任何域名跨域访问

       4.使用nginx作为搭建API接口网关(强烈推荐)因为保证了域名和端口都一致,以项目名来区分反向代理到真实服务器地址

          反向代理地址定义为 xx.xx.xx.xx:8888,代理地址xx.xx.xx.xx:8081和xx.xx.xx.xx:8082,发送ajax请求时只要你的服务器ip和端口           与nginx反向代理地址xx.xx.xx.xx:8888相同即可,会将真实请求发送到8081或8082服务器上

        5.使用zuul微服务网关搭建API接口网关(强烈推荐),用的是spring cloud 的eureka组件,没有测试过,等自己测试过了再来补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值