HTML 5以前的标准由于考虑到浏览器安全问题并不允许直接跨域通信,于是为了达到跨域通信的目的各种蛋疼的解决办法出现了,常用的有:jsonp、使用代理文件、地址栏hash等等,这些办法的出现在达到解决跨域问题的同时,也增加了前端页面的性能开销和维护成本。HTML5新的标准中,增加了” Cross-Origin Resource Sharing”特性,这个特性的出现使得跨域通信只需通过配置http协议头来即可解决。
Cross-Origin Resource Sharing 详细解释见:
http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html
Cross-Origin Resource Sharing实现的最重要的一点就是对参数” Access-Control-Allow-Origin”的配置,即通过 次参数检查该跨域请求是否可以被通过。
如:Access-Control-Allow-Origin:http://a.com表示允许a.com下的域名跨域访问;
Access-Control-Allow-Origin:*表示允许所有的域名跨域访问。
如果需要读取读取cookie:
需要配置参数:Access-Control-Allow-Credentials:true
同时在xhr发起请求的时候设置参数withCredentials为true:
var xhr = new XMLHttpRequest();
xhr.open();
xhr.withCredentials = true; //这个放在xhr.open后面执行,否则有些浏览器部分版本会异常,导致设置无效。
示例代码:
php:
1
2
3
4
|
header( 'Access-Control-Allow-Origin:http: //a.com' );
header( 'Access-Control-Allow-Methods:POST,GET' );
header( 'Access-Control-Allow-Credentials:true' );
echo 'Cross-domain Ajax' ;
|
JS:
1
2
3
4
5
6
7
8
9
10
|
var xhr = new XMLHttpRequest(); ;
xhr.open( 'GET' , 'http: //b.com/cros/ajax.php' , true );
xhr.withCredentials = true ;
xhr.onload = function () {
alert(xhr.response); //reposHTML;
}; xhr.onerror = function () {
alert( 'error making the request.' );
}; xhr.send(); |
发表评论
-
基于脚本的动画的计时控制(“requestAnimationFrame”)(转载)
2014-03-04 19:12 1044Internet Explorer 10 和使 ... -
IE11开发人员工具:UI响应工具详解
2014-02-27 18:33 942我讨厌debug,相信也没多少开发者会喜欢。但是当代码出 ... -
IE11开发人员工具:内存分析工具详解
2014-02-27 18:32 1458上篇我们跟大家介绍 ... -
E6与location.hash和Ajax历史记录 (转载)
2014-02-26 12:23 560为了在IE6中改变hash来保留历史记录实现ajax的前进 ... -
MIME Types(转载)
2013-12-31 10:20 649MIME Types - Complete List ... -
iframe历史记录问题(转载)
2013-10-17 10:21 1346在做页面统计的时候 ... -
前端类库精选(转)
2013-05-11 00:57 0优秀的前端类库,自己平时遇见了,这里Mark一下。 1、m ... -
10个chrome console实用小技巧(转)
2013-05-09 10:56 10711. 基本输出 让我们先从最常见的console.l ... -
CSS3那些不为人知的高级属性(转)
2013-04-19 13:35 958原文:CSS的未来:一些 ... -
JavaScript 时间、格式、转换及Date对象总结(转)
2013-04-10 14:49 719悲剧的遇到问题,从前台得到时间,“Tue Jan 29 16 ... -
如何制作一个可及性强(accessible)的网页弹框(转载)
2013-04-02 16:18 810英文原文:Making an accessib ... -
JavaScript MVC js也mvc(转载)
2013-03-16 23:59 692JavaScript MVC 中文:http://blog ... -
SUBLIME TEXT 2 设置文件详解
2012-12-27 11:21 1063Sublime Text 2是那种让人会一眼就爱上的编辑 ... -
两个按位非操作与Math.floor操作(译)
2012-12-10 18:17 959位操作符在我们编码过程中是容易被遗忘的,可能更多的源于我们 ... -
img中src为空的影响
2012-11-26 23:32 0这是我们经常能遇到的代码,可以直接用html标签或者Java ... -
IE6下position定位子元素溢出,父元素被撑开的解决思路。(转)
2012-11-13 18:04 1649在一些被常规的页面布局当中,我们常常需要通过positi ... -
chrome developer tool 调试技巧(转)
2012-11-12 13:16 871这篇文章是根据目前 chrome 稳定版(19.0.10 ... -
你清楚jquery是如何清除ajax缓存的吗?(转)
2012-11-11 11:19 1057大家都知道万恶的IE在ajax中往往只读取第一次ajax ... -
是时候使用JavaScript严谨模式(Strict Mode)提升团队开发效率 In JavaScript(转)
2012-11-10 23:33 726随着WebApp突飞猛进的发展,Javascript写的 ... -
Javascript基础
2012-11-10 23:25 0原文:http://bonsaiden.githu ...
相关推荐
5. **HTML5的Storage**:使用localStorage或sessionStorage存储用户标识,然后在新的域上通过Ajax请求验证该标识,从而实现跨域登录状态的同步。 **二、实现HTTP跳转HTTPS共享session** 1. **SSL/TLS配置**:确保...
在jQuery的ajax方法中,设置了`dataType: 'json'`表明期望返回JSON格式的数据,`type: opts.method`指定了HTTP请求类型(通常是POST),`async: false`设为同步上传,`data: formData`包含了待上传的文件数据,`...
对于跨域问题,可以通过多种方式来解决,如JSONP、CORS(跨源资源共享)等。其中,利用ASP.NET配合jQuery是一种常见且实用的方法。本文将详细介绍如何在ASP.NET项目中配置CORS,并结合jQuery实现跨域请求。 #### ...
在这个实例中,我们学习了如何配置CORS,设置请求类型、数据类型,以及处理成功的回调和错误回调,这些都是进行Ajax跨域请求的关键步骤。理解并熟练掌握这些知识点对于任何前端开发者来说都是至关重要的。
在讨论AJAX跨域请求数据时,我们必须首先了解同源策略。同源策略是由浏览器提供的一种安全机制,它限制了来自不同源的文档或脚本如何与来自另一个源的资源进行交互。所谓“源”通常由协议、域名和端口号组成。如果两...
但通过JSONP或CORS(跨源资源共享),可以解决跨域问题,使得相册系统可以从其他服务器获取数据。 ### 8. 页面更新与SEO 由于Ajax加载的内容不在原始HTML中,搜索引擎可能无法抓取这些内容。可以通过将Ajax内容...
- **安全问题**:AJAX 请求受限于同源策略,无法跨域访问数据。可以通过 CORS(跨源资源共享)解决。 - **用户体验**:过度使用 AJAX 可能导致用户迷失在无刷新的环境中,需适度使用并提供清晰的反馈。 ### 7. AJAX...
如果需要跨域,可以通过CORS(跨源资源共享)或者JSONP等方式解决。 七、缓存控制 默认情况下,$.ajax请求会启用缓存,除非明确禁用(通过`cache: false`设置)。对于需要每次获取最新数据的情况,应关闭缓存。 ...
Ajax跨域请求是Web开发中一个非常重要的知识点,它涉及到前端和后端的数据交互问题。所谓“跨域”,指的是浏览器出于安全考虑,阻止页面脚本进行非同源域的HTTP请求。然而,在实际开发过程中,经常需要从前端页面...
3. **数据格式**: 虽然名字中有XML,但Ajax并不局限于使用XML作为数据格式。JSON(JavaScript Object Notation)现在更常用,因为它更轻量级,解析更快,且与JavaScript语法紧密相关。 4. **JavaScript**: Ajax的...
12. **AJAX与JSONP**:JSONP(JSON with Padding)是跨域数据交互的一种解决方案,通过动态创建`<script>`标签来加载服务器返回的JavaScript代码,以达到获取数据的目的。 13. **Promise对象**:jQuery 1.5引入了...
但可以通过CORS(跨源资源共享)或JSONP(JSON with Padding)解决这个问题。 7. **异步与同步** - 异步:Ajax的核心特性,允许在等待服务器响应的同时执行其他脚本,提高用户体验。 - 同步:非标准方式,会阻塞...
为实现跨域,可以使用JSONP或者CORS(跨源资源共享)技术。 ### 9. jQuery与AJAX库 为了简化AJAX操作,开发者通常会使用jQuery或其他库,如axios、fetch等。这些库提供了更友好的API,减少了处理兼容性和错误处理...
5. **跨域问题**:由于同源策略,Ajax请求通常只能访问同源(协议+域名+端口)的资源。如果需要跨域,需要服务器端设置CORS(跨源资源共享)头或者使用JSONP(JSON with Padding)。 6. **错误处理**:通过onerror...
尽管异步请求是Ajax的主要特点,但有时也需要使用同步请求,例如在页面卸载前保存数据。在`open()`方法中,第三个参数设为false即可。 通过这个视频教程系列,你将全面了解Ajax的工作原理,学会如何在实际项目中...
1. 跨域请求:Ajax的同源策略限制了只能向同一域名下发送请求,但通过JSONP或者CORS(跨源资源共享)可以实现跨域数据交互。 2. 进度事件:XMLHttpRequest对象提供了onprogress事件,可以监控上传或下载的进度,...
- 同源策略限制了Ajax的请求只能发送到同源(协议+域名+端口相同)的服务器上,但可以通过CORS(跨源资源共享)或者JSONP(JSON with Padding)解决跨域问题。 5. **异步处理** - 异步是Ajax的核心特性,允许在...
JSONP和CORS:解决跨域问题,获取远程数据。 数据同步策略:如何有效地处理在线/离线状态下的数据同步。 实时数据更新:WebSocket在数据流应用中的应用。 通过学习这些书籍,读者可以系统地了解HTML5的各项功能...
5. **跨域问题**:由于同源策略的限制,Ajax默认只能请求同源(协议、域名、端口相同)的资源。若要跨域,可采用JSONP、CORS(跨源资源共享)等解决方案。 6. **jQuery和其他库的封装**:jQuery和其他JavaScript库...