AngularJS跨域请求

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

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

跨域资源共享(Cross Origin Resource
Sharing,CORS)是一个缓解跨域难点的好方法,从而能够行使XHR从区其他源加载数据和资源。跨域是很久此前就有的要求,不过CORS那种措施却相比较新,在此之前使用的是JSONP除此以外,还有一种名叫服务器代理的不二法门,我相比较中意CORS,它不佳的地方应该很少,比如,在古旧的浏览器(IE8以及以前)中绝非获取协理。不过对于移动端支出以来,这么些可以不要考虑。

服务器必须承受那一个请求,然后检查HTTP方法和头的合法性。如果通过了反省,服务器会在响应(response)中添加下面那么些头参数:

除此以外,在《AngularJS权威指南》一书中关于跨域与同源策略难题,也有特其他叙说,那里是计算概要:

//…

本文紧要针对网上种种跨域请求的下结论,并插手自己的表明判断,完毕工作中境遇的跨域难题。所涉嫌到的世界很小,仅仅局限于:AngularJS
CORS post 并还要必要完成json数据传送给服务器。

‘Content-Type’:’application/json’

AngularJS端使用$http.post(),同时设置请求头音信

Last-Event-ID

浏览器在全局层面禁止了页面加载或执行与自我来源差其他域的此外脚本。

HTTP方法是HEAD GET
POST之一,同时HTTP的header包罗如上面所示,任何一个不满意那三种须要的乞请,都是错综复杂请求,比如发送put,delete等http动作,或者Content-Type:application/json的内容。

预请求是想服务器请求批准,有了服务器的许可才可以拿走服务器的数目,也就是实践真正的伸手。

text/plain

Access-Control-Allow-Headers
假如浏览器端请求设置了Access-Control-Request-Headers头,服务器端必须在响应中添加同一个头参数。

同源策略允许页面从同一个站点加载和实践一定的本子。浏览器会比较每一个资源的合计、主机名和端口号来判定资源是或不是与页面同源。站外其余来源的脚本同页面的交互则被严谨限制。

Access-Control-Request-Method

CORS已毕方式在地点已经写到,并且就是基于AngularJS完毕,所以那边就不再另行,然而,关于CORS分类中的非简单请求,《AngularJS权威指南》那本书有一部分介绍,应该会对开发工作富有启发。

在服务器端设置允许在其它域名下访问,及响应类型、响应头设置

大家期待服务器在可以承受这些请求时重回200状态码,如若服务器重回来200状态码,真正的伸手才会时有暴发。

第一,(博文是互为转发,也尚无看到原笔者和原网站,我摘写其中一段:)$http.post完成跨域:

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

只有复杂请求包括”预检”这一动作,其余Access-Control-马克斯-Age应该也会潜移默化OPTIONS请求的出殡。

Access-Control-Request-Headers    这些header的值是可选的,可以是以逗号分隔的非不难头列表。

HTTP的header平时包蕴上面那些内容:

CORS分不难请求和复杂请求

application/x-www-form-urlencoded

当然,在自我的品种中必要传递的是json格式的多少,所以要求在客户端的content-type中装置如下(倘若服务器端没有设置“Access-Control-Allow-Headers”,”x-requested-with,content-type”,下边的设置浏览器会报错):

AngularJS,tips:CORS并不是安全部制,只是现代浏览器已毕的一个业内。应用的安全策略还索要在类型全局的角度考虑与操纵。

“Accept

Accept-Language

multipart/form-data

只要想要接济PUT或DELETE方法,又或者想给请求设置特殊的始末类型,就要求发送非不难请求。对于非不难请求,浏览器采取了差异的处理方式,发送三个请求:预请求和伏乞。

});

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

Content-Language

Access-Control-Allow-Origin    那一个头的值必须和哀告来源相同,或者是*表示允许其余来源的呼吁

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

Access-Control-Allow-Methods
设置HTTP方法的列表,列表中的项浏览器端才得以应用。

浏览器发送的预请求是OPTIONS类型的,预请求中包括以下头音信:

并不是持有的跨域请求都会发送OPTIONS请求,依照这些分裂,CORS分为不难请求和复杂性请求,不难请求不发送OPTIONS。

相关文章