AJAX 跨域问题
导语
AJAX 的跨域问题,常用的解决方法有两种,简单记录下,详细内容查看参考资料。以下示例自建两个域名测试,www.test.com、www.example.com。
同源策略
同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。两个页面,如果域名、协议、端口都相同,即是同源,其间的交互不存在问题。同源策略是很重要的安全机制,但是有些时候需要突破这种机制,这就需要跨域。
JSONP
JSONP 是很常用的方法,它是利用 <script> 标签没有跨域限制的原理实现。以下是在 www.test.com 中使用 JQuery 示例
$.ajax( { url:'//www.example.com', data:{name:'tom'}, type:'get', dataType:'jsonp', jsonp: "callback", success:function(data) { console.log(data) } })
以下是 www.example.com 的 PHP 处理
<?php $callback = $_GET['callback']; $name = $_GET['name']; // 处理数据 $data = md5($name); echo $callback . '(' . json_encode($data) . ')';
CORS
CORS (Cross-origin resource sharing),跨域资源共享标准允许 Web 应用服务器进行跨域访问控制。相对于 JSONP 只支持 GET ,CORS 支持更多的 HTTP 请求,同时更简单、安全。不过 CORS 可能会存在兼容问题。
以下是在 www.test.com 中发送 AJAX 请求
$.ajax( { url:'//www.example.com', data:{name:'tom'}, type:'post', dataType:'json', success:function(data) { console.log(data) } });
www.example.com 的 PHP 处理
<?php header("Access-Control-Allow-Origin: http://www.test.com"); $name = $_POST['name']; // 处理数据 $data = md5($name); echo json_encode($data);
参考资料:同源策略、CORS、浏览器同源政策及其规避方法、跨域资源共享 CORS 详解。
相关推荐
时光如瑾雨微凉 2020-07-19
ppsurcao 2020-06-14
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05