什么是跨域?浏览器为何禁止跨越请求?如何解决浏览器跨越问题

1、什么是跨域?

跨越是产生于浏览器的"同源策略",所谓同源策略是指:
1)协议:http、https
2)域名:www.baidu.com、uland.taobao.com …
3)端口:80,8080…

上面四点均一样的情况下,才允许访问相同的cookie、localStorage 和 发送Ajax 请求。如果上面其中一点不同都会出现跨越问题。

2、浏览器为何禁止跨越请求?

1)如果跨域可以请求的话,很多的服务器都会受到额外的攻击;
2)黑客可以在别人的网站代码里面去恶意的攻击其他公司的服务器;
3)因为浏览器是客户端,客户端的群体太大,而服务器是可以随便哪里都可以访问的,没有限制。

3、那么如何去解决浏览器跨越呢?

总的来说有五种方法:前端jsonp,服务器nginx 反向代理,CORS,浏览器配置(谷歌Google Chrome),后台语言处理,websocket

  • jsonp

    *实现原理:利用浏览器对页面html标签中的src属性发起的ajax请求不受同源策略影响这个‘bug’,实现的跨域请求。
	var script = document.createElement('script');
		script.type = 'text/javascript';
		// 传参并指定回调执⾏函数为onBack
		script.src = 'http://www.....:8080/login?user=admin&callback=onBack';
		document.head.appendChild(script);
		// 回调执⾏函数
		function onBack(res) {
		 alert(JSON.stringify(res));
}
  • nginx 反向代理、node中间件http-proxy-middleware代理

  • CORS

    • 通过设置响应头内容实现跨域
	"Access-Control-Allow-Origin":"*", //允许所有域
    "Access-Control-Allow-Headers":"Content-Type,Content-Length, Authorization, Accept,X-Requested-With",//请求头类型
    "Access-Control-Allow-Methods":"PUT,POST,GET,PATCH,DELETE,OPTIONS"//请求方法类型
  • 浏览器设置 (只适用于谷歌调试使用)

  • 后台语言处理

  • websocket

    • socket 请求不存在跨域问题

总结

json只能应用在get请求中,websocket只能适用于socket中,其他解决方案都适用

//持续更新,请留意

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值