Jsonp post 跨域方案

一、什么叫跨域?

跨域是指,从站点A上请求B站点上的资源。

当以下3种情况的任一种出现,都会出现跨域问题。(由于JS同源策略的影响,会限制跨域的数据通信)

1、域名不同 ( 域名和此域名对应的ip )

2、端口不同

3、协议不同 (http、https)

 

二、Cross-Origin Resource Sharing:跨域资源共享

header('Access-Control-Allow-Origin:*');是html5新增的一项标准功能,IE10以下 版本的浏览器不支持

客户端更改:
添加:crossDomain: true
修改:dataType: "json"

服务器端添加(PHP作为后端语言):
header('Access-Control-Allow-Origin: *');

*:表示允许所有其他的域访问

www.baidu.com: 表示只有百度这个域名可以访问服务器资源。其他则会被限制。


header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');

 

设置完成后,跨域请求成功。在firefox的http请求中可以看到相关信息。

另外:

  如果要操作Cookie,还得继续补增响应头:

<?php  header('Access-Control-Allow-Credentials:true'); ?>

  浏览器端。需要将 XMLHttpRequest 对象的 withCredentials 属性设置为 true,JQuery1.5.1+ 就开始提供了相应的字段,使用方式如下:

$.ajax({
url:"www.***.com",
xhrFields:{
withCredentials:true
},
crossDomain:true
});

 

posted @ 2016-04-07 16:01  AHAU航哥  阅读(162)  评论(0)    收藏  举报