1. Ajax不能跨域请求的原因
同源策略(Same Origin Policy),是一种约定,该约定阻止当前脚本获取或者操作另一个域下的内容。所有支持Javascript的浏览器都支持同源策略,也就是说浏览器可以隔离来自不同源的内容,阻止跨域请求的发生。
2. 解决方法
(1) CORS
在被请求的脚本中使用header()函数设置http响应,从而使得跨域请求能够发生:
header(“Access-Control-Allow-Origin:*”);
这一方法称为CORS(Cross-Origin Resource Sharing),是w3c的工作草案。
(2) 使用Jsonp (Json with padding)
jsonp的原理是通过script标签的src属性来请求不同源的脚本。
步骤:
1) 创建script标签,设置src属性
2) 定义回调函数
3) 在被请求的php脚本中执行回调函数
4) 在回调函数中处理返回数据