XMLHTTP中setRequestHeader的参数问题

来源:csdn 时间:2008-09-30 10:48:00 

我查了资料:setRequestHeader,单独指定请求的某个http头

语法

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协议的东西可以找RFC文档看看

标签:setRequestHeader,XMLHTTP
0
投稿

猜你喜欢

  • 通过T_sql语句向其中一次填入一条数据或一次填入多条数据的方式填充数据

    2012-11-30 19:55:34
  • 比较一下看看自己掌握了多少SQL快捷键

    2009-01-04 14:04:00
  • 如何做好一份前端工程师的简历?

    2009-02-17 12:52:00
  • Debugging JavaScript:throw与console

    2008-08-29 17:03:00
  • 新书:《精通CSS网页布局》

    2009-01-08 11:57:00
  • 漫谈前端开发中的团队合作

    2009-02-05 21:02:00
  • 渗透和改变 非洲web 2.0网站Logo

    2008-01-22 13:31:00
  • js 混淆加密工具代码

    2007-09-22 18:10:00
  • 如何实现在下拉菜单里输入文字?

    2010-06-03 10:31:00
  • WEB2.0网页制作标准教程(11)不用表格的菜单

    2008-02-19 19:36:00
  • 设计能力决定权力

    2009-06-16 14:48:00
  • IE中伪类:hover的使用及BUG

    2007-05-11 17:04:00
  • MYSQL5 下的兼容说明(my.ini my.conf)

    2008-02-23 10:13:00
  • MySQL高级特性之集合函数

    2009-02-26 16:19:00
  • 使用CSS简单实现垂直居中

    2008-06-23 07:32:00
  • 关于utf-8格式中截取中英文字符串长度无效的问题

    2008-11-25 14:00:00
  • SQL Server查询速度慢的原因及优化方法

    2009-01-05 13:46:00
  • asp自带的内存缓存 application

    2011-03-09 11:18:00
  • MYSQL教程:检查数据表和修复数据表

    2009-03-11 15:24:00
  • 《写给大家看的设计书》阅读笔记之亲密性原则

    2009-07-08 20:02:00
  • asp之家 网络编程 m.aspxhome.com