本文主要针对网上各种跨域请求的总结,并加入自己的验证判断,实现工作中遇到的跨域问题。所涉及到的领域很小,仅仅局限于: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-width,content-type");
AngularJS端使用$http.post(),同时设置请求头信息
$http.post(url,{languageColumn:‘name_eu‘},{‘Content-Type‘:‘application/x-www-form-urlencoded‘}).success(function(data) {
//…
});
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请求的发送。