2013-01-04 69 views
1

新来的XMLHttpRequest,这里的问题是,我有些困惑:2有关内容类型

  1. 在一个XMLHttpRequest使用POST方法时,为什么一定要设置内容类型? XHR.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);

  2. 是不是默认值application/x-www-form-urlencoded已经?

回答

1

在一个XMLHttpRequest使用POST方法时,为什么一定要设置内容类型?

XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

HTTP/POST不要求特定内容的类型,当你在AJAX做一个HTTP/POST(或通过其他方式也一样)。这取决于你(直到服务器端程序处理它)。阅读第二部分,了解为什么我们必须明确设置它。

很多时候,我们会将表格序列化(百分位数编码 - a = b & c = d格式)并将其发送到服务器。这种格式是application/x-www-form-urlencoded。如果你要发送XML,你可以使用application/xml,对于JSON你可以使用application/json等。

至于GET请求,没有正文,因此我们并不真的需要内容类型标题。

是不是默认值application/x-www-form-urlencoded已经?

我试着通过here浏览默认的内容类型标题。我找不到任何东西。但是,当我尝试通过chrome的控制台执行HTTP/POST AJAX请求时,我注意到chrome的默认值是application/xml

只是一条忠告 - 除非明确声明和/或是标准的一部分,否则绝不要依赖默认行为。为什么不明确设置内容类型?

+0

谢谢老兄。你的回答帮助我理解了MIME /内容类型。我的第二个问题是因为我很懒惰,而且从你的角度来看,我没有看过它。现在看,这个chrome使用application/xaml对我来说是一个真正的开眼界;) – user1534664