ajax的get请求和表单的get请求,头部字段是不是一样的?

ajax的get请求和表单的get请求,头部字段是不是一样的?

阅读 6.2k
2 个回答

这个问题太开放了:可以一样,也可以不一样,全在开发者

为什么说不知道呢?因为 HTTP 的规格没有说,所以,只能看如何实现了。

可以试着问这样的问题:

用 chrome 浏览器发送 get 请求,和用 IE 发送 get 请求时,此两者的请求头一样吗?

答案是不一样。为什么?因为浏览器的实现方式不一样,他们的 User-Agent 值不一样。

用 ajax 发送 get 请求,直接在浏览器输入网址,用 form 发送 get 请求,此三者的请求头一样吗?

我们使用相同的浏览器,所以 User-Agent 是一样的。

但是如果是用了 jQuery 框架,则不一样,jQuery 会增加 OriginX-Requested-With:XMLHttpRequest 头。

X-Requested-With:XMLHttpRequest 是 jQuery 框架增加的

if ( !s.crossDomain && !headers["X-Requested-With"] ) {
    headers["X-Requested-With"] = "XMLHttpRequest";
}

至于 Origin 这个应该是通过 XMLHttpRequest 发送请求时,由浏览器增加的。为的是防止跨域。

刚才我又测试了一下,使用 chrome 浏览器发送 ajax 请求,有 Origin 头。使用 firefox 则没有。说明 Origin 是 chrome 的 XMLHttpRequest 对象发送的。

综上所述,可以一样,也可以不一样,全在开发者

开发者包括

  1. 浏览器开发者
  2. 浏览器组件开发者,例如 XMLHttpRequest 对象
  3. 类库开发者
  4. 网站开发者

你可以自己在应用中使用 js 添加请求头。

不明真相,直说你想做些什么? 对于后台程序而言,无论是AJAX发起的提交还是标准的FORM表单提交都是一样的东西。

宣传栏