Web 技术研究所

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

CORS带来的请求发送问题

  跨域资源共享这东西早就用烂了吧,对于不需要兼容IE的大型项目是很有效的,直接一个Access-Control-Allow-Origin就解决了跨域放的问题。这东西虽然好用,但是也会带来一些额外的问题,比如考虑上不兼容CORS的浏览器时就会有请求发送的问题。
  在不支持CORS的浏览器(IE9-)中,跨域请求根本不会被发送出去,服务器当然不会做任何处理。比如下面这个例子 //服务器程序,这里用NodeJS做测试
require('http').createServer(function(req,res){
  //一旦有请求就向控制台输出浏览器的UA
  console.log(req.headers['user-agent']);
  //释放连接
  res.end();
}).listen(8000);
<script>
//客户端程序 http://127.0.0.1/test.html
with(new XMLHttpRequest)
  open("GET","http://localhost:8000/",true),
  send();
</script>
  当然由于是跨域,直接访问是没有权限的,用下面这些浏览器测试
  但是,支持CORS的浏览器由于需要访问服务器获取HTTP头,因此它们必须把请求发送到服务器上。所以在Node的控制台上可以看到所有支持CORS的浏览器,这里用三个,分别是Chrome、Firefox、IE10,找不到IE9的。因为IE9不支持CORS,所以请求不被发出。

  也许这并不是什么大问题,但是对于一些跨域的修改操作,一旦请求被发出服务器就会处理,所以做跨域相关的东西时候需要考虑这个问题。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^