由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域。

 
CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种解决跨域的方案。
详细的描述还请查阅:
http://www.w3.org/TR/cors/
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
 
比如我有两个虚拟主机(apache本地配置),www.a.com和www.b.com
现在b.com上要获取a.com的登陆信息,比如用户ID,用户名等。
 
在www.b.com的index.php如下:
<!doctype html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<div class="userInfo"></div>
</body>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
var url = "http://www.a.com/index.php";
$.get(url, {a : "getUserInfo"}, function(data) {
$(".userInfo").text("Id:" + data.uid + " Name:" + data.name);
}, "json");
</script>
</html>

在www.a.com的index.php如下:

<?php
$a = !empty($_GET['a']) ? trim($_GET['a']) : ''; if($a == 'getUserInfo') {
echo json_encode(array(
'uid' => 1,
'name' => '测试',
));
} else {
echo '';
}

在b.com的index.php中用jquery的get方法来发送请求,正常情况下会失败。

那么我们只需要在a.com的index.php中添加如下代码,则b.com就可访问。
header('Access-Control-Allow-Origin: *');

访问结果如下:

Id:1 Name:测试

当然我们也可以指定可以访问的域名。

header('Access-Control-Allow-Origin: http://www.b.com');

CORS浏览器的支持情况如下图:

PHP下ajax跨域的解决方案之CORS的更多相关文章

  1. PHP下ajax跨域的解决方案之jsonp

    首先要说明一下json和jsonp的区别? json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式. var person = { "name": "test& ...

  2. PHP下ajax跨域的解决方案之window.name

    原理核心:window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变. 依此原理,我们可以在页面A中用iframe加载其他 ...

  3. ie8或9下ajax跨域问题

    ie8或9下ajax跨域支持,添加如下代码 <!--[if (IE 8)|(IE 9)]><script src="https://cdn.bootcss.com/jque ...

  4. C#进阶系列——WebApi 跨域问题解决方案:CORS

    前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列— ...

  5. AJAX跨域调用相关知识-CORS和JSONP(引)

    AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...

  6. C#进阶系列——WebApi 跨域问题解决方案:CORS(转载)

    C#进阶系列——WebApi 跨域问题解决方案:CORS   阅读目录 一.跨域问题的由来 二.跨域问题解决原理 三.跨域问题解决细节 1.场景描述 2.场景测试 四.总结 正文 前言:上篇总结了下W ...

  7. 跨域学习笔记2--WebApi 跨域问题解决方案:CORS

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...

  8. java、ajax 跨域请求解决方案('Access-Control-Allow-Origin' header is present on the requested resource. Origin '请求源' is therefore not allowed access.)

      1.情景展示 ajax调取java服务器请求报错 报错信息如下: 'Access-Control-Allow-Origin' header is present on the requested ...

  9. 【JS】AJAX跨域-JSONP解决方案(一)

    AJAX跨域介绍 AJAX 跨域访问是用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面 由于安全方面的原因, 客户端js使用xmlhttprequest只能用来向来源网站发送请求 ...

随机推荐

  1. 设置UMG的ComboBox(String)字体大小

    转自:http://aigo.iteye.com/blog/2295448 UMG自带ComboBox组件没有提供直接的属性来修改其字体大小,只能自己做一个列表类型的widget然后再塞进ComboB ...

  2. OpenStack之日志

    OpenStack日志 日志对于一个稳定的系统来说相当重要,对于OpenStack这样一个大型的系统,日志当然也是必不可少,理解Openstack系统的日志对于保证OpenStack环境稳定非常重要. ...

  3. 洛谷P1415 拆分数列

    题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输出使得最后一个数最小的同时 ...

  4. nginx经过多层代理后获取真实来源ip

    nginx取 $remote_addr 当做真实ip,而事实上,$http_X_Forwarded_For 才是用户真实ip,$remote_addr只是代理上一层的地址 解决方案: 在 http 模 ...

  5. Flash和滚动字幕

    flash 1.插入flash     1)<object>             <embed src="路径"></embed>      ...

  6. html文字在django模板中取消转译

    django {{ news.content | safe }} 还有escape=fales,具体咋用,有点蒙蔽

  7. 26. 天马tomcat授权文件的影响因素

    问题:Tianma版本同一台机器的Server端序列号有时会显示空白 描述:同一台机器的tomcat,tianma版本序列号为空(如图) 解决:手动删除ABS_DOCUMENT\LiveBos目录下s ...

  8. shell echo 打印换行

    echo -e "aaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbb"

  9. django-allauth 使用

    参考: http://www.honkerzhou.com/post/3/ https://www.jianshu.com/p/41335d861a8d https://django-allauth. ...

  10. XE6 任务栏 控件

    WIN7/WIN8 ONLY,鼠标放在任务栏上,预览程序界面,用此控件可以预览安装进度条. Taskbar1->ProgressMaxValue = 100;  Taskbar1->Pro ...