admin管理员组文章数量:1530332
1、什么是跨域?
跨越是产生于浏览器的"同源策略",所谓同源策略是指:
1)协议:http、https
2)域名:www.baidu、uland.taobao …
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中,其他解决方案都适用
//持续更新,请留意
版权声明:本文标题:什么是跨域?浏览器为何禁止跨越请求?如何解决浏览器跨越问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1726625081a1078677.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论