`
sisi1984117
  • 浏览: 151385 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

【转】XMLHTTP中setRequestHeader参数问题

阅读更多

新加:设置编码方法

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,很明显英文的意思是 连接:关闭
只是客户端在提交数据时告诉服务器让谁先关闭连接而已。

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/avatee/blog/item/7fd5ef086a900738e82488c8.html
分享到:
评论

相关推荐

    XMLHTTP中setRequestHeader参数问题

    ajax 请求头部设置 XMLHTTP中setRequestHeader参数问题

    JS与Ajax Get和Post在使用上的区别实例详解

    get和post方法最大的不同在于: 1.get方法传值参数在url里面,而post参数放send里面 2.post方法必须加上 xmlHttp.setRequestHeader(“Content-Type”, “application/...xmlHttp.setRequestHeader(“Content-Type”,

    Js+Ajax,Get和Post在使用上的区别小结

    1.get方法传值参数在url里面,而post参数放send里面 2.post方法必须加上 xmlHttp.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”); 下面实例可以看get方法 xmlHttp.open("GET","for....

    PHP 与 js的通信(via ajax,json)

    一定要设置xmlHttp.setRequestHeader,否则传往PHP的参数会变成null(line 38)

    ajax局部刷新一个div下jsp内容的方法

    用AJAX刷新一个DIV中的jsp内容 代码如下: [removed] var xmlhttp; function startrefresh(){ xmlhttp=new XMLHttpRequest(); xmlhttp.open(“POST,”ss.jsp”,true); xmlhttp.setRequestHeader(“Content-type”,”...

    ajax,javascript

    xmlhttp.send(null); var msg = request.responseText; c.request.onreadystatechange=getMsg; //设置回调函数,每当 readyState 改变时,就会触发 onreadystatechange 事件。 d.request.setRequestHeader("Content...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    你要在DTD中定义一个元素,然后在XML文档中使用。元素的定义语法为:<!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*> 说明: "<!ELEMENT" 是元素的声明,说明你要定义的是一个元素; 声明后面的"DESCRIPTION",...

    Ajax课件学习(免费)

    4、当向send()方法提供参数时,要确保open()中指定的方法是POST,如果没有数据作为请求体的一部分发送,则使用null. 3.2.4.4setRequestHeader(header,value) 1、当浏览器向服务器请求页面时,它会伴随这个请求发送...

    js使用小技巧

    快速转到位置 obj.scrollIntoView(true) 锚 <a name="first"> <a href="#first">anchors 网页传递参数 location.search(); 可编辑 obj.contenteditable=true 执行菜单命令 obj.execCommand 双字节字符 ...

Global site tag (gtag.js) - Google Analytics