Fiddler在结肠后增加了空间

时间:2013-12-11 11:28:28

标签: http fiddler

我在Fiddler2中提出了这样的请求

User-Agent: Fiddler
Host: asdf.example.com
Content-Type: application/x-www-form-urlencoded 
Content-Length: 0
Key=asdf:qwer

当我点击执行时,Fiddler编辑最后一行阅读:

Key=asdf: qwer

请注意额外的空间。

为什么会发生这种情况,是否会导致我的请求出现问题?

1 个答案:

答案 0 :(得分:3)

  

RFC 2616, 4.2 Message Headers

     

每个标题字段包含      名称后跟冒号(“:”)和字段值。字段名称      不区分大小写。 字段值可以在任何金额之前      LWS,但首选单个SP

     

[...]

     

字段内容不包括任何前导或尾随LWS:      在第一个非空格之前出现的线性空白区域      字段值的字符或在最后一个非空格之后      字段值的字符。这样的领先或尾随LWS可能是      删除而不更改字段值的语义。任何LWS      在字段内容之间发生的可以用单个SP替换      在解释字段值或转发消息之前      下游。

换句话说:对于字段值,将忽略前导空格,甚至优选空格。当想要发送空格时,您必须quote the stringSome-Header: " foo"

所以Fiddler很好地显示(并且可能发送)它,尽管一个自定义的HTTP服务器不会期望有空间存在故障并应该修复。

关于服务器返回的关于“无效标题名称”错误的评论:HTTP标头定义如下:

message-header = field-name ":" [ field-value ]
field-name     = token
field-value    = [...]

如您所见,field-name只能存在token,其中不包含=(因为它是separator)。

因此,您使用的标头名Key=asdf无效,并且由于语法格式错误,服务器会抛出400 Bad Request。您声称获得的更具体Invalid header name,听起来就像是在IIS中运行您的网站。例如,将=更改为-,您就会发现它会正常工作。