XMLHTTP中setRequestHeader参数问题

转载 2014年02月13日 14:20:39

新加:设置编码方法

setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=gb2312")  

语法

oXMLHttpRequest.setRequestHeader(bstrHeader, bstrValue);

参数

bstrHeader 字符串,头名称。

bstrValue 字符串,值。

还是不很明白

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

CONTENT-TYPE是什么意思,application/x-www-form-urlencoded是什么意思?

2、下面几句setRequestHeader的含义?


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

setRequestHeader("Content-length", paramsSend.length); 

setRequestHeader("Connection", "close");


解答:

通常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTTP协议的头文件, 
告诉服务器客户端要下载什么信息以及相关的参数,如: 

GET /bb.asp?www=1234 HTTP/1.1 
Accept: */* 
Accept-Language: zh-cn 
UA-CPU: x86 
Accept-Encoding: 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 
Accept-Encoding: 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 
Accept-Encoding: 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,很明显英文的意思是 连接:关闭 
只是客户端在提交数据时告诉服务器让谁先关闭连接而已。

XMLHTTPRequest的方法和属性介绍

使用XMLHTTPRequest对象的好处是可以在后台下载网页数据,不需要启动浏览器程序,并且可以下载各种类型的网页内容,例如XML文档、Javascript数据以及图像文件等。 这里先介绍一下XM...
  • iamlaosong
  • iamlaosong
  • 2014年05月21日 16:11
  • 1500

ASP模拟POST提交,然后XMLHTTP获取数据总是乱码,请大家帮忙,感谢!

目前在建的一个项目要求使用外部的一个网站达到切词的目的,由于外部网站的API接口要求必须是POST提交数据,因此只能模拟POST提交,然后再去读取提交后的数据,我用以下的代码,获取回来的中文总是乱码,...
  • lishimin1012
  • lishimin1012
  • 2017年03月06日 22:18
  • 548

关于ajax拦截跨源请求出现问题与setRequestHeader

源码: function add(){ var params=yc.serialize(document.myform);//序列化表单元素   console.log(params); re...
  • u012637258
  • u012637258
  • 2016年08月05日 19:25
  • 849

用Delphi7 Post 请求到Tomcat,得到Response,中文OK

比较简单的问题,好久没用Delphi了,折腾了一番。 首先确定Tomcat中的应用,能够正确得到中文参数,没有乱码,这个不说了,网上太多文章了 然后写一段Java测试程序: public Act...
  • lff0305
  • lff0305
  • 2013年05月02日 17:39
  • 1493

XmlHttpResponse 向服务器发送请求

震枯枯霸
  • SpringFileld
  • SpringFileld
  • 2014年08月19日 16:03
  • 850

JavaScript中多的是。你不知道的坑

1、最新的chrome浏览器:
  • xingxing1828
  • xingxing1828
  • 2015年08月14日 14:33
  • 2229

php与Ajax(二)—XMLHttpRequest对象的方法与属性

属性: onreadystatechange* 指定当readyState属性改变时的事件处理句柄。只写 readyState 返回当前请求的状态,只读. responseBody 将...
  • yanqianglifei
  • yanqianglifei
  • 2016年05月12日 13:34
  • 1055

万能的xmlhttp

剖析XMLHttpRequest 学过Ajax的都知道,Ajax与服务器异步交互的核心便是XMLHttpRequest,有了XMLHttpRequest才使的Ajax有了与后交互的能力,今天就来...
  • itisnull
  • itisnull
  • 2016年07月15日 09:22
  • 153

一个简单的例子教你明白XMLHTTPRequest的原理

一个简单的例子教你明白XMLHTTPRequest的原理首先先简单的介绍下XMLHTTPRequest对象,XMLHTTPRequest对象可以在不刷新整个页面的前提下,实现局部刷新网页,jQuery...
  • u011846750
  • u011846750
  • 2016年03月26日 20:45
  • 3592

在https的链接中vb使用post提交xml数据

由于工作需要,需要vb提交xml数据到服务器上,所以,需要找到一个好的方法。   之前有代码使用了MSXML2.XMLHTTP对象进行xml数据取得,而且链接是https形式的,于是就参照代码提...
  • cncco
  • cncco
  • 2016年01月04日 01:35
  • 3058
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XMLHTTP中setRequestHeader参数问题
举报原因:
原因补充:

(最多只允许输入30个字)