AngularJSAngularJS跨域请求

本文主要对网上各种跨域请求的下结论,并投入自己之验证判断,实现工作受到相遇的跨域问题。所涉到的园地颇有点,仅仅局限为:AngularJS
CORS post 并以要贯彻json数据传送给服务器。

率先,(博文是互转载,也并未见到原作者和原网站,我选择写其中同样段:)$http.post实现跨域:

当服务器端设置允许以外域名下访,及响应型、响应头设置

response.setHeader(“Access-Control-Allow-Origin”,”*”);

response.setHeader(“Access-Control-Allow-Methods”,”POST”);

response.setHeader(“Access-Control-Allow-Headers”,”x-requested-with,content-type”);

AngularJS端使用$http.post(),同时装请求头信息

$http.post(url,{languageColumn:’name_eu’},{‘Content-Type’:’application/x-www-form-urlencoded’}).success(function(data)
{

//…

});

当然,在自家的色蒙需传递的凡json格式的数额,所以要以客户端的content-type中设置如下(如果服务器端没有设置“Access-Control-Allow-Headers”,”x-requested-with,content-type”,下面的安浏览器会报错):

‘Content-Type’:’application/json’

CORS分简单请求与复杂请求

连无是具的跨域请求都见面发送OPTIONS请求,按照这分,CORS分为简单请求和复杂请求,简单请求不发送OPTIONS。

HTTP的header通常含下面这些情节:

“Accept

Accept-Language

Content-Language

Last-Event-ID

Content-Type的值仅是下列之一:

application/x-www-form-urlencoded

multipart/form-data

text/plain

HTTP方法是HEAD GET
POST之一,同时HTTP的header包含如上面所示,任何一个勿满足当下片栽要求的求,都是纵横交错请求,比如发送put,delete等http动作,或者Content-Type:application/json的情节。

特来千丝万缕请求包含”预检”这同动作,另外Access-Control-Max-Age应该为会潜移默化OPTIONS请求的发送。

另外,在《AngularJS权威指南》一修中有关跨域与同源策略问题,也发出特别的叙述,这里是总结概要:

浏览器在全局层面禁止了页面加载或执行和自己来源不同之地域的旁脚本。

同源策略允许页面从与一个站点加载与执行一定的本子。浏览器会比较每一个资源的商议、主机名与端口号来判断资源是否跟页面同源。站外其它来源的剧本同页面的相互则于严厉限。

跨域资源共享(Cross Origin Resource
Sharing,CORS)是一个缓解跨域问题之好点子,从而可以下XHR从不同之源加载数据以及资源。跨域是非常悠久之前即有些要求,但是CORS这种措施可较新,以前下的凡JSONP除此之外,还有雷同栽名叫服务器代理的章程,我较受意CORS,它不好的地方应该格外少,比如,在古老的浏览器(IE8以及之前)中没有沾支持。但是对于移动端支出以来,这个好不要考虑。

CORS实现方式以上面就写及,并且就是基于AngularJS实现,所以这里虽不再另行,但是,关于CORS分类中的无简单请求,《AngularJS权威指南》这按照开有有介绍,应该会指向开发工作富有启发。

设若想使支持PUT或DELETE方法,又或想让要设置特殊之情节类型,就待发送非简单请求。对于未简单请求,浏览器采用了不同之处理方式,发送两独请求:预请求和呼吁。

预请求是想服务器请求开绿灯,有矣服务器的许可才可以取服务器的数码,也不怕是执行真正的求。

浏览器发送的预请求是OPTIONS类型的,预请求中隐含以下头信息:

Access-Control-Request-Method

Access-Control-Request-Headers    这个header的值是可选的,可以是为逗号分隔的非简单头列表。

服务器必须接受这个要,然后检查HTTP方法和头的合法性。假如通过了反省,服务器会当应(response)中上加下面这些头参数:

Access-Control-Allow-Origin    这个腔的值必须跟伸手来源相同,或者是*意味着允许任何来自之恳求

Access-Control-Allow-Methods
设置HTTP方法的列表,列表中的起浏览器端才好使。

Access-Control-Allow-Headers
如果浏览器端请求设置了Access-Control-Request-Headers头,服务器端必须于应中上加同一个峰参数。

咱愿意服务器在好领之请时返回200描写态码,如果服务器返回来200描绘态码,真正的请求才会发出。

tips:CORS并无是安全体制,只是现代浏览器实现之一个正经。应用的安全策略还索要以列全局的角度考虑同控制。

相关文章