Web 技术研究所

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

GET方法附带数据?

  通常我们会为需要发送数据的请求使用POST方法,普通的请求使用GET方法。确实这是最标准的用法了,但是翻翻RFC2616中的定义,并没看任何禁止GET方法附带数据的定义。虽然Web中的XHR对象不支持这样奇怪的用法,但是GET确实可以附带数据。
  首先,我们写一个用于测试的服务器程序 <?=file_get_contents('php://input')?>   这一行PHP代码就是把HTTP请求的数据部分原封不动地输出。现在,我们使用XHR对象发起一个请求试试 with(new XMLHttpRequest)
  open("GET","test.php",false),send("测试"),console.log(responseText);
  这是意料之中的结果,因为XMLHttpRequest的规范中,关于send方法有这样的描述“如果请求的方法是GET或HEAD,参数将被无视”。

但在我们如果使用微软提供的XMLHTTP对象,就不会被这个规则所约束。
with(new ActiveXObject("Microsoft.XMLHTTP"))
  open("GET","test.php",false),send("测试"),console.log(responseText);

  无论如何,至少Apache服务器是支持这种用法的,虽然这里的测试使用了IE特有的对象。实脱离浏览器自带的XHR对象,会用到HTTP请求的地方也还有很多。
  另外,这篇文章不是在推崇使用GET方法发送数据,只是想让大家知道,这么做是允许的。其实这种做法我也觉得很诡异,但如果真遇上什么应用场景了,它也许可以解决点问题。
网名:
54.145.94.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^