解决跨域问题

本文介绍了几种常见的跨域处理方法,包括使用iFrame、JSONP、设置HTTP头部信息、服务器代理及nginx反向代理等。其中,nginx反向代理被认为是最简单且有效的方法,只需配置nginx即可实现跨域访问,无需更改客户端代码。
常用的跨域方法有这样一些: 1:使用iFrame访问另一个域。 然后再从另一个页面读取iFrame的内容。jquery等有一些封装。 据说Firefox等可能不支持读取另一个iFrame的内容。 2:jsonp。需要服务器支持。使用script src动态得到一段java代码。是回调页面上的js函数,参数是一个json对象。 jquery也有封装。 3:设置http头,Access-Control-Allow-Origin:* 但据说IE有一些版本不识别这个http头。 4:服务器代理。如,服务器写一个url的处理action。其参数是一个url。这个服务器会用参数拼凑一个url,用httpclient库去执行url,然后把读取的内容再输出到http客户端。 ps: nginx反向代理实现跨域 上面提到的这些跨域方法,都有一些问题。有的不能支持所有浏览器,有的需要修改javascript代码,有的需要重写服务器端代码。有的在session等场景下会有问题。 其实,用nginx反向代理实现跨域,是最简单的跨域方式。只需要修改nginx的配置即可解决跨域问题,支持所有浏览器,支持session,不需要修改任何代码,并且不会影响服务器性能。 我们只需要配置nginx,在一个服务器上配置多个前缀来转发http/https请求到多个真实的服务器即可。这样,这个服务器上所有url都是相同的域名、协议和端口。因此,对于浏览器来说,这些url都是同源的,没有跨域限制。而实际上,这些url实际上由物理服务器提供服务。这些服务器内的javascript可以跨域调用所有这些服务器上的url。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值