用CORS(跨域源资源共享)解决跨域问题

前几天比较厉害的一位前端的同事说了一下跨域的问题,提供了一些比较好的解决办法。最后推荐的方法就是CORS(跨来源资源共享)。不过这方法好像 百度出来的东西挺少的,所以自己测试了一下。还是比较好用,不过这方法有些比较老的浏览器不支持,IE8据说是支持的,不过有点麻烦。具体支持情况可以查看 维基百科 http://zh.wikipedia.org/wiki/CORS

主要是在服务器端申明一下支持 CORS就行了。。。
header(“Access-Control-Allow-Origin:http://phpquan.com”);
这是比较安全的,意思是只接受 phpquan.com 跨域来的请求。这样就可以很简单的使用jQuery里面的ajax方法请求。
百度了很多,一般解决方法是最省事的一句 header(“Access-Control-Allow-Origin:*”);

不过看了很多,如果是为了安全这个CORS语法还挺多的,先写下来 有机会可以慢慢研究
header(‘Access-Control-Allow-Origin: http://www.example.com/’);
header(‘Access-Control-Allow-Methods: GET, POST, PUT, DELETE’);
header(‘Access-Control-Max-Age: 3628800’);

具体代码:
post.php

header("Access-Control-Allow-Origin:http://phpquan.com");
var_dump($_POST);

ajax.html 这里只需要在浏览器的控制台里面敲入以下代码就行,不过前提是先要引入 jQuery。根据以上代码,这里要在上面申明的域名下做以下操作

$.ajax({
   type: "POST",
   url: "http://example.com/post.php",
   data: "name=John&location=Boston",
   dataType: "json",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
});