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
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));
}
"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"//请求方法类型
总结
json只能应用在get请求中,websocket只能适用于socket中,其他解决方案都适用
//持续更新,请留意