Chinaunix首页 | 论坛 | 博客
  • 博客访问: 282456
  • 博文数量: 226
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2111
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-20 09:02
个人简介

web web web

文章分类

全部博文(226)

文章存档

2020年(2)

2019年(1)

2018年(3)

2017年(26)

2016年(57)

2015年(60)

2014年(77)

我的朋友

分类: 架构设计与优化

2014-11-20 16:59:38

原文地址:AJAX跨域HTTP请求 作者:lrfgjj2

为了解决跨域请求的问题,我们之前采用了jsonP的方式。但是jsonp存在两个比较
严重的问题:
1 只支持GET请求。
2 所有的ajax的背后都不是异步请求,容易导致浏览器死锁。
海哥给提供了另外一种解决方案,就是CORS。
目前我已经修改了服务端的代码(BaseAction),请大家修改下客户端的代码。并
加以测试。
例子如下:
客户端: (json类型变量去掉,增加crossDomain: true, xhrFields结构 )

  1. <script>
  2. var param = {
  3. type:'POST',
  4. url: "http://api.test.com/test2.php",
  5. data: "name=John&location=Boston",
  6. xhrFields: {
  7. withCredentials: true,
  8. },
  9. crossDomain: true,
  10. success: function(ret)
  11. {
  12. alert(ret); //json
  13. }
  14. };
  15. $.ajax(param);
  16. </script>
服务端:

  1. $http_origin = $_SERVER['HTTP_ORIGIN'];
  2. header('Access-Control-Allow-Origin: '. $http_origin); // $http_origin不
  3. 能设置为*,为了防止跨域cookie盗用
  4. header('Access-Control-Allow-Methods: POST,GET,OPTIONS');
  5. header('Access-Control-Allow-Credentials: true');
  6. header('Access-Control-Max-Age: 1000');
  7. header('Access-Control-Allow-Headers: *')
阅读(484) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~