javascript和JQuery焦点图和代码特效大全
当前最流行的开源CMS网站系统大全
当前位置:首页 > WEB前端 > AJAX

使用ajax发起post请求时设置HTTP头信息

来源:IT技术网编辑:雨天发布于:2017-04-30人围观

今天写了一个ajax 用post请求方式提交  到后台接收不到数据,经过多方摸索 在网上找到点资料与大家分享一下

一定要设置这个头文件否则后台得不到前台ajax请求发送的数据。

  XMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded charset=utf-8");

通常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTTP协议的头文件,

告诉服务器客户端要下载什么信息以及相关的参数,如:

GET /bb.asp?www=1234 HTTP/1.1

Accept: */*

Accept-Language: zh-cn

UA-CPU: x86

DontTrackMeHere: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Host: www.e4j.cn:89

Connection: Keep-Alive

Cookie: %C3%F7%CC%EC=%B0%CB;ASPSESSIONIDASDBSDRR=BLEDBIBBCGKBJAKJCFEJKGII

而 XMLHTTP 就是通过HTTP协议取得网站上的文件数据的,所以也要发送HTTP头给服务器。

但是 XMLHTTP 默认的情况下有些参数可能没有说明在HTTP头里,这是当我们需要修改或添加这些参数时就用到了

setRequestHeader 方法。

就比如如果上面这段HTTP头文件内容是 XMLHTTP 提交默认的情况,当使用 setRequestHeader 方法后就这样,如:

XMLObject.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"

setRequestHeader "Connection", "close"

这时HTTP头信息就应该是这样了:

GET /bb.asp?www=1234 HTTP/1.1

Accept: */*

Accept-Language: zh-cn

UA-CPU: x86

DontTrackMeHere: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

CONTENT-TYPE:application/x-www-form-urlencoded

Host: www.e4j.cn:89

Connection: close

Cookie: %C3%F7%CC%EC=%B0%CB;ASPSESSIONIDASDBSDRR=BLEDBIBBCGKBJAKJCFEJKGII

setRequestHeader方法只是XMLHTTP为添加或修改HTTP头提供的一个接口方法而已,

至于里面的值则是HTTP协议的含义,当然也可以发自己的东西进去,即使IIS不能识别你的信息也不会报错

如:

setRequestHeader "MyName", "Supermanking"

虽然IIS不会报错,但这个信息也可以有用,可以在ASP程序里读取HTTP头信息分析是否有

MyName: Supermanking

信息,可根据你的需求来做处理

还有,CONTENT-TYPE:application/x-www-form-urlencoded含义是表示客户端提交给服务器文本内容的编码方式

是URL编码,即除了标准字符外,每字节以双字节16进制前加个“%”表示

当然还有其他编码方式,如:CONTENT-TYPE:multipart/form-data

至于:Content-length 就是表示提交的数据字节大小

http有几种提交方式,其中比较常用的就是 GET 和 POST

这个标志就放在HTTP头开头的地方,这样讲容易理解点

GET 方式是没有提交内容的,所以 Content-length 在 GET 模式下是无效的.

GET 传参数的方式就是通过虚拟地址传送,如:

GET /bb.asp?www=1234 HTTP/1.1

参数全部就只有 "www=1234" 这么多

如果用POST的话就有些不同,POST是将参数放到HTTP后面的,就以上面的HTTP作范例,用POST的方法传参数

POST /bb.asp HTTP/1.1

Accept: */*

Accept-Language: zh-cn

UA-CPU: x86

DontTrackMeHere: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

CONTENT-TYPE:application/x-www-form-urlencoded

Host: www.e4j.cn:89

Content-length: 8

Connection: close

Cookie: %C3%F7%CC%EC=%B0%CB;ASPSESSIONIDASDBSDRR=BLEDBIBBCGKBJAKJCFEJKGII

www=1234

这时,数据就需要说明字节大小了

至于 Connection: Close,很明显英文的意思是 连接:关闭

只是客户端在提交数据时告诉服务器让谁先关闭连接而已。

与相关的文章
有时间的话来看看IT界的突发事件