浏览器的同源原则,使得XMLHttpRequest 不能跨域通讯。为了实现跨域,有很多变态的做法。其中,比较优雅的是 JSONP 方案,但 JSONP 仅限于 GET 方法,其它方法无法实现。
W3C在2009年的时候就出过一个标准,只要在响应头部使用Access-Control-Allow-Origin 即可实现跨域通讯,例如:
HTTP/1.1 200 OK Access-Control-Allow-Origin: *
header('Access-Control-Allow-Origin: *');
当然,如果想要兼容古老的 IE8,还得找 JSONP 方案,或者去实现那些古老变态的 iframe 方案。
参考资料:
http://www.w3.org/TR/cors/