Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

IE8的CORS不支持更多方法

  在IE8上,我们可以使用XDomainRequest对象来实现CORS,它可以识别服务器相应的Access-Control-Allow-Origin头。但XDomainRequest对象仅支持GET和POST方法,它无法识别服务器响应的Access-Control-Allow-Methods头,所以无法支持更多方法。
  可以使用下面这个代码测试,首先是服务器端,使用NodeJS: //nodejs
require("http").createServer(function(req,res){
  res.setHeader("Access-Control-Allow-Origin","http://127.0.0.1");
  res.setHeader(
    "Access-Control-Allow-Methods",
    "PUT, GET, POST, DELETE, HEAD, PATCH"
  );
  res.end(req.method+" "+req.url);
}).listen(1234);
  前端代码: <script>
void function(){
  var XHR=!-[1,]?XDomainRequest:XMLHttpRequest;
  var tests=["POST","DELETE","PUT","GET","HEAD","PATCH"];
  for(var i=0;i<tests.length;i++)void function(i){
    var xhr=new XHR;
    try{
      xhr.open(tests[i],"http://127.0.0.1:1234/"+i,true);
      xhr.onload=function(){
        if(xhr.readyState<4)return;
        console.log(xhr.responseText);
      };
      xhr.send();
    }catch(e){
      console.log(tests[i]+" 方法不支持");
    };
  }(i);
}();
</script>
  现代浏览器是所有方法都支持的(HEAD没有响应实体,不过方法本身是支持的)

  IE8就呵呵了

  目前没有找到直接的解决方式,也许在IE8上普及REST还需要AS的支持吧。。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^