JS跨域访问(ajax跨域)

好吧,国庆有点不务正业,玩了几天游戏,咳咳 感觉还不错,放松下,本来是打算学angular2的,国庆的时候刚好也看到vue2的正式版本发布,恩,最后都没看。。


正言

为什么会出现跨域?

跨域的产生是因为CSRF:跨站请求伪造(攻击者盗用了你的身份,以你的名义发送恶意请求,比如以发信息,购买商品,虚拟货币交易,个人信息泄露,在代码方法体现:有一个接口是删除用户,这个接口被攻击者获取了,直接去删除你的用户)

a.baidu.com访问b.baidu.com  是跨域;
a.baidu.com:8080访问a.baidu.com:80 是跨域;
http://a.baidu.com访问https://a.baidu.com 是跨域(懒得自己写了复制过来的)

解决方法:

1.jsonp(缺点只支持get请求,需要去了解jsonp的原理不说了)

2.CORS是定义一种跨域访问机制,跨域实现ajax实现跨域访问,CORS同意一个域上的网络应用向一个域提交跨域AJAX请求,只需要响应标头Access-Control-Allow-Origin:* 

兼容到ie8,在我公司实际用得过程中发现ie8-ie9需要重写ajax方法,工作量太大了。而且有一个缺点没法设置header头部信息,是因为ie8-ie9的写法不同,附上IE8-IE9兼容写法的网站

3.反向代理(nginx,net的iis都有,apache也有相应的)

我公司是采取cors的方式来解决跨域的,但是有一天,老板心情一好,一拍头,给我兼容ie8,哎呦我去。然后就去找了cors ie8兼容的写法,但是发现需要修改的地方有点多,ajax请求需要修改
然后想着jsonp去,记起jsonp只能get请求不适合,而且还需要修改后台代码,同上理由了。
最后采取的是反向代理,其实是最简单最粗暴的方法,而且前后都不用修改


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值