目前找到的有以下3种方法:
###jsonp###
jsonp 的原理和实现可以在网上找到以下是使用jquery的方式
$.ajax({
type: “get”,
url: “http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998",
dataType: “jsonp”,
jsonp: “callback”,
jsonpCallback:”jsonpCallback”,
success: function(json){
alert(‘json:’ + json);
},
error: function(){
alert(‘fail’);
}
});
这种方式需要更改服务端到数据返回格式。
由于它到原理是类似加载一个js脚本,只会使用GET方式请求,在一些特殊场合不适用!~
###设置Header Access-Control###
在比较高端到浏览器,如非IE低版本的浏览器,可设置服务端返回到header来告诉浏览器是否支持夸域。
具体到header参数如下:
1. Origin。HTTP请求头,任何涉及CORS的请求都必需携带。
2. Access-Control-Request-Method。HTTP请求头,在带预检(Preflighted)的跨域请求中用来表示真实请求的方法。
3. Access-Control-Request-Headers。HTTP请求头,在带预检(Preflighted)的跨域请求中用来表示真实请求的自定义Header列表。
4. Access-Control-Allow-Origin。HTTP响应头,指定服务器端允许进行跨域资源访问的来源域。可以用通配符*表示允许任何域的JavaScript访问资源,但是在响应一个携带身份信息(Credential)的HTTP请求时,Access-Control-Allow-Origin必需指定具体的域,不能用通配符。
5. Access-Control-Allow-Methods。HTTP响应头,指定服务器允许进行跨域资源访问的请求方法列表,一般用在响应预检请求上。
6. Access-Control-Allow-Headers。HTTP响应头,指定服务器允许进行跨域资源访问的请求头列表,一般用在响应预检请求上。
7. Access-Control-Max-Age。HTTP响应头,用在响应预检请求上,表示本次预检响应的有效时间。在此时间内,浏览器都可以根据此次协商结果决定是否有必要直接发送真实请求,而无需再次发送预检请求。
8. Access-Control-Allow-Credentials。HTTP响应头,凡是浏览器请求中携带了身份信息,而响应头中没有返回Access-Control-Allow-Credentials: true的,浏览器都会忽略此次响应。
###P3P方式###
一起没听说过,现在也没用过,所以,看官自己去百度吧!~ 额………………