`

使用HTML5 跨域共享特性解决AJAX跨域数据同步问题(转)

阅读更多

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:

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:

JavaScript
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();

原文地址:http://www.alloyteam.com/2012/11/html5-cors/

分享到:
评论

相关推荐

    跨域共享session (实现http跳转https 共享session)

    5. **HTML5的Storage**:使用localStorage或sessionStorage存储用户标识,然后在新的域上通过Ajax请求验证该标识,从而实现跨域登录状态的同步。 **二、实现HTTP跳转HTTPS共享session** 1. **SSL/TLS配置**:确保...

    真正解决百度编辑器UEditor上传图片跨域问题.docx

    在jQuery的ajax方法中,设置了`dataType: 'json'`表明期望返回JSON格式的数据,`type: opts.method`指定了HTTP请求类型(通常是POST),`async: false`设为同步上传,`data: formData`包含了待上传的文件数据,`...

    ASP.NET配合jQuery解决跨域调用的问题.txt

    对于跨域问题,可以通过多种方式来解决,如JSONP、CORS(跨源资源共享)等。其中,利用ASP.NET配合jQuery是一种常见且实用的方法。本文将详细介绍如何在ASP.NET项目中配置CORS,并结合jQuery实现跨域请求。 #### ...

    jQuery使用ajax跨域获取数据的简单实例

    在这个实例中,我们学习了如何配置CORS,设置请求类型、数据类型,以及处理成功的回调和错误回调,这些都是进行Ajax跨域请求的关键步骤。理解并熟练掌握这些知识点对于任何前端开发者来说都是至关重要的。

    AJAX跨域请求数据的四种方法(实例讲解)

    在讨论AJAX跨域请求数据时,我们必须首先了解同源策略。同源策略是由浏览器提供的一种安全机制,它限制了来自不同源的文档或脚本如何与来自另一个源的资源进行交互。所谓“源”通常由协议、域名和端口号组成。如果两...

    基于ajax相册系统

    但通过JSONP或CORS(跨源资源共享),可以解决跨域问题,使得相册系统可以从其他服务器获取数据。 ### 8. 页面更新与SEO 由于Ajax加载的内容不在原始HTML中,搜索引擎可能无法抓取这些内容。可以通过将Ajax内容...

    AJAX 参考手册 ajax 教程

    - **安全问题**:AJAX 请求受限于同源策略,无法跨域访问数据。可以通过 CORS(跨源资源共享)解决。 - **用户体验**:过度使用 AJAX 可能导致用户迷失在无刷新的环境中,需适度使用并提供清晰的反馈。 ### 7. AJAX...

    使用$.Ajax调用后台.aspx

    如果需要跨域,可以通过CORS(跨源资源共享)或者JSONP等方式解决。 七、缓存控制 默认情况下,$.ajax请求会启用缓存,除非明确禁用(通过`cache: false`设置)。对于需要每次获取最新数据的情况,应关闭缓存。 ...

    Ajax如何进行跨域请求?Ajax跨域请求的原理

    Ajax跨域请求是Web开发中一个非常重要的知识点,它涉及到前端和后端的数据交互问题。所谓“跨域”,指的是浏览器出于安全考虑,阻止页面脚本进行非同源域的HTTP请求。然而,在实际开发过程中,经常需要从前端页面...

    Ajax笔记,异步数据

    3. **数据格式**: 虽然名字中有XML,但Ajax并不局限于使用XML作为数据格式。JSON(JavaScript Object Notation)现在更常用,因为它更轻量级,解析更快,且与JavaScript语法紧密相关。 4. **JavaScript**: Ajax的...

    ajax资源包,jquery

    12. **AJAX与JSONP**:JSONP(JSON with Padding)是跨域数据交互的一种解决方案,通过动态创建`<script>`标签来加载服务器返回的JavaScript代码,以达到获取数据的目的。 13. **Promise对象**:jQuery 1.5引入了...

    AJAx教程(HTML版)配套源代码

    但可以通过CORS(跨源资源共享)或JSONP(JSON with Padding)解决这个问题。 7. **异步与同步** - 异步:Ajax的核心特性,允许在等待服务器响应的同时执行其他脚本,提高用户体验。 - 同步:非标准方式,会阻塞...

    14ajax课程_AJAX基础_

    为实现跨域,可以使用JSONP或者CORS(跨源资源共享)技术。 ### 9. jQuery与AJAX库 为了简化AJAX操作,开发者通常会使用jQuery或其他库,如axios、fetch等。这些库提供了更友好的API,减少了处理兼容性和错误处理...

    各种ajax提交demo

    5. **跨域问题**:由于同源策略,Ajax请求通常只能访问同源(协议+域名+端口)的资源。如果需要跨域,需要服务器端设置CORS(跨源资源共享)头或者使用JSONP(JSON with Padding)。 6. **错误处理**:通过onerror...

    ajax视频教程5

    尽管异步请求是Ajax的主要特点,但有时也需要使用同步请求,例如在页面卸载前保存数据。在`open()`方法中,第三个参数设为false即可。 通过这个视频教程系列,你将全面了解Ajax的工作原理,学会如何在实际项目中...

    Ajax 经典案例开发大全

    1. 跨域请求:Ajax的同源策略限制了只能向同一域名下发送请求,但通过JSONP或者CORS(跨源资源共享)可以实现跨域数据交互。 2. 进度事件:XMLHttpRequest对象提供了onprogress事件,可以监控上传或下载的进度,...

    ajax教程 中文手册

    - 同源策略限制了Ajax的请求只能发送到同源(协议+域名+端口相同)的服务器上,但可以通过CORS(跨源资源共享)或者JSONP(JSON with Padding)解决跨域问题。 5. **异步处理** - 异步是Ajax的核心特性,允许在...

    html5电子书

    JSONP和CORS:解决跨域问题,获取远程数据。 数据同步策略:如何有效地处理在线/离线状态下的数据同步。 实时数据更新:WebSocket在数据流应用中的应用。 通过学习这些书籍,读者可以系统地了解HTML5的各项功能...

    ajax基础学习资料

    5. **跨域问题**:由于同源策略的限制,Ajax默认只能请求同源(协议、域名、端口相同)的资源。若要跨域,可采用JSONP、CORS(跨源资源共享)等解决方案。 6. **jQuery和其他库的封装**:jQuery和其他JavaScript库...

Global site tag (gtag.js) - Google Analytics