背景: 想实现跨域去调用接口, 然后同时支持下次调用,能够带cookie信息过来,同时支持来自多个源头的域名的跨域调用。

1.这样支持来自所有域名的跨域调用:

不支持跨域是,浏览器报错:

在api接口服务端加上相应的协议头:

 header("Access-Control-Allow-Origin: *',);
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type');

  但是,这样的api接口,不支持cookie.

2.如果想支持cookie, 需要加上

header('Access-Control-Allow-Credentials: true');

  但是这样的话,前面服务端设置的这个头,浏览器就会报错。说是access-control-allow-origin头不能  用   * 这个通配符。

header("Access-Control-Allow-Origin: *',);

浏览器报错如下图:

  

必须改成具体的某个域名。  但是,我们的api又希望支持来自许多不同域名的跨域访问,怎么办呢,这时候,在服务端做个动态的判断处理就ok了。

<?php
$ret = array(
'name' => isset($_POST['name'])? $_POST['name'] : '',
'gender' => isset($_POST['gender'])? $_POST['gender'] : ''
); header('content-type:application:json;charset=utf8'); $origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : ''; $allow_origin = array(
'http://www.client.com',
'http://www.client2.com'
); if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Origin:'.$origin);
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
} echo json_encode($ret);
?>

  参考:http://my.oschina.net/blogshi/blog/303758

最新文章

  1. Spring(5)—— 注解
  2. Nine-Patch图片
  3. loadrunner解决“服务器正在运行中”方法
  4. http://blog.csdn.net/liuqinstudy/article/details/8281498
  5. Maven中&lt;dependencies&gt;节点和&lt;dependencyManagement&gt;节点的区别 转
  6. Java学习-Overload和Override的区别
  7. OD: Writing Small Shellcode
  8. LeetCode_Generate Parentheses
  9. 使用Xshell5连接虚拟机VMware中安装的CentOS7系统
  10. RobotFramework下的http接口自动化Follow Response关键字的使用
  11. django 的时区设置
  12. 2.4 Visio2007显示动态对齐网格
  13. CSS之a标签锚点
  14. 为什么Firefox在SSH上这么慢?
  15. python练习题-打印斐波拉契数列前n项
  16. Keepalived笔记
  17. URL编码表(收集到的,为了方便查看)
  18. python List使用
  19. stm32 堆和栈(stm32 Heap &amp; Stack)
  20. JavaScript学习(5)-Image对象和动态HTML

热门文章

  1. perl面向对象
  2. makesfx.exe (Make SFX (Self-extracting archive))
  3. OC中的野指针,空指针,nil,Nil,NULL,NSNULL小结
  4. javascript IP验证
  5. 获取sql执行时间
  6. 网站网址前的小logo
  7. hibernate缓存机制(二级缓存)
  8. AJax的异步请求
  9. Windows Batch Scripts
  10. 转:loadrunner经典面试题