跨域
同源策略
所有的浏览器都遵守同源策略,即JavaScript或Cookie只能访问同域下的内容
怎么算跨域呢,先看下一个域名地址的组成:
http:// www . abc.com : 8080 / scripts/jquery.js
协议 子域名 主域名 端口号 请求资源地址
当协议、子域名、主域名、端口号任意一个不同时,都算作不同域
不同域之间互相请求资源,就算作“跨域”
用途:比如一个网站比较大,在郑州和上海分别设了两个服务器,用户操作页面就需要跨域了
JSONP
- 用于get请求传输少量数据,不支持post请求
$("#getJsonpByJquery").click(function () { $.ajax({ type:"GET", url: 'http://localhost:2701/home/somejsonp', dataType: "jsonp", jsonp: "callback", success: function (data) { console.log(data) } }) })
$jsonp = $_GET["callback"]; $jsonp."(json对象)";
W3C的CORS规范
- CORS的原理:
CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。
- 在服务端添加
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET');