javascript 跨域资源共享(CORS)

2017-09-07  本文已影响0人  JeremyChi

定义

CORS (Cross-Origin Resource Sharing)是W3C的一个工作草案,定义了在必须访问跨域资源时,浏览器与服务器应该如何沟通。

基本思想

使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是成功或者失败。

例子

比如一个简单的使用GET或POST发送的请求,它没有自定义的头部,在发送请求时,需要额外加一个Origin头:

 Origin: http://www.nczonline.net

如果服务器认为这个请求可以接受,就在Access-Control-Allow-Origin投不中回发相同的源信息(如果是公共资源,可以回发"*"):

Access-Control-Allow-Origin: http://www.nczonline.net

IE & Modern Browser

IE

通过XDR(XDomainRequest)对象实现,有以下关键点:

Modern Browser

传入绝对路径的url,无需额外代码就可以触发CORS的行为

JSONP

利用<script>元素有能力不受限制的调用其他域加载资源的特性实现:

function handleResponse(response){
    alert("You re at IP address " + response.ip + ", which is in " + response.city + ", " + response.region_name);
}
var script = document.createElement("script");
script.src = "http://freegeoip.net/json/?callback=handleResponse"; document.body.insertBefore(script, document.body.firstChild);

有以下关键点:

上一篇 下一篇

猜你喜欢

热点阅读