关于ajax的跨域
来源:互联网 发布:java for循环嵌套 编辑:程序博客网 时间:2024/06/05 18:25
在前端开发中,跨域是经常遇到的问题,也是面试最喜欢问的问题,究其根本原因,是浏览器的同源策略所致,是浏览器为了避免不同域名不能共享cookie以及locationstorage等等,发起请求的时候无法携带不同域名的cookie,不能请求不同域名的json。
但是事无绝对,浏览器是运许srcipt标签跨域访问的,也就是说我可以在我的页面引用不同域名的script,另外h5提供了一些带有一定安全措施的跨域办法。
跨域一般有以下集中方法:
jsonp/script:jsonp和script其实都是利用script无跨域限制来实现的,jsonp是使用了一下eval函数把字符串变成对象(具体的内部机制可以在网上查阅)
postmessage方法:chrome插件中的background.js跟原页面的通讯也是这样的实现,也就是我在另外的页面上有接受send过来字符串对应的处理方法
中间层:利用服务端做中间层转化一次
在jq的aajx方法中有这样一个参数平时用的比较少,发现设置后可以跨域,在页面加入这样的配置即可
1
2
3
4
5
6
$.ajaxSetup({
crossDomain:
true
,
xhrFields: {
withCredentials:
true
}
});
这个方法的细节还有待研究,先列出来吧,crossDomain好理解,另一个还没仔细研究,先记下来,以后补充
这是jquery 的写法,如果使用原生的javascript,可以参考如下写法:
1 //这里需要处理针对不同浏览器的xmlhttprequest,ie的是activeXObject 2 var xhr = new XMLHttpRequest(); 3 xhr.open("GET", "test"); 4 5 xhr.setRequestHeader('Content-Type','text/html'); 6 xhr.setRequestHeader('Access-Control-Allow-Origin','*/*');//这里可以是设置请求允许的域名白名单的,可以直接写域名,也可以写*表示全部 7 xhr.withCredentials=true;//这个是设置允许跨域的 8 xhr.onreadystatechange = function() { 9 //todo10 }11 xhr.send();
前端做了这些之后,还需要服务端设置接受http头信息,当然也可以设置指定域名的:
1
2
3
4
5
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: */*
Access-Control-Allow-Origin: http:
//www.test.com
0 0
- 关于ajax的跨域
- 关于ajax的跨域
- 关于ajax跨域的解决方案
- 关于ajax的跨域问题
- 关于ajax跨域请求的问题
- 关于Ajax的跨域问题
- 关于ajax跨域问题
- 关于ajax跨域问题
- 关于Ajax的跨域请求的问题
- W3C 中关于JavaScript Ajax跨域请求的草案
- 关于ajax跨域问题josnp的解决方案
- 关于Ajax跨域访问问题的一种解决办法
- 关于Ajax跨域启用CORS解决方案的思考
- js 技术关于 ajax 的跨域问题
- 关于ajax跨域问题的一些认知
- 关于PHP Ajax跨域问题的解决办法
- 关于AJAX和JSONP的跨域问题和原理
- 关于ajax post请求跨域问题的解决心得
- 程序自删除的一种实现方式
- 一个同行的mvvm详细讲解
- Linux修改文件内容【命令】
- 1、初学java---类、对象、变量、方法、限制符
- 安卓多媒体解析
- 关于ajax的跨域
- Android开发错误解决方式集锦(持续更新中...)
- MC9S12G中文教学
- N!问题
- 关于动作发生在请求前还是请求后(以点赞为例)
- UEditor编辑器如何关闭抓取远程图片本地化功能
- 欢迎使用CSDN-markdown编辑器
- Java提高篇-----java集合细节(二):asList的缺陷
- android 卸载应用、打开应用、获得系统中已安装应用列表