问题描述
||
我有一台运行2008 R2和IIS 7.5的新VPS服务器。
某些客户端软件(而非浏览器)通过HTTP GET和POST请求与服务器应用程序(ASP.NET)通信。
在IIS7.5上,HTTP POST请求被拒绝,并显示以下错误:“ HTTP错误400-请求格式错误”
相同的应用程序在IIS7上可以正常工作,并且在IIS6上已经使用了多年。
我只能假设IIS7.5会进行一些其他的验证检查吗?
有什么办法可以关闭它们吗?我尝试了在MSDN上找到的所有设置,但到目前为止似乎没有任何效果,我什至无法让IIS为拒绝的请求转储日志!
更改客户端代码不是一种选择。
以下是失败的POST请求。
谢谢,
尼科斯
POST /NK002/Inbound.ashx?rid=0 HTTP/1.1
User-Agent: nkHTTP_1
Accept: */*
Accept-Encoding: identity; application/octet-stream; application/x-www-form-urlencoded
Host: www.nks001.com
Connection: keep-alive
Content-Length: 307
<nkXML>
<header count=\"2\">
<service>Connection</service>
<function>Initialize</function>
</header>
<body count=\"4\">
<platform>Windows</platform>
<data>BbbFBwAAAABFPaRkAAAAAHN5aE8AAAAA</data>
<attName_0>PoolRebel.Version</attName_0>
<attValue_0>2</attValue_0>
</body>
</nkXML>
解决方法
问题是您的
Accept-Encoding:
标头。最后两个内容编码无效:
应用/八位字节流
应用程序/ x-www-form-urlencoded
根据IANA允许的内容编码值,您只能使用:
压缩
放气
i
gzip
身份
pack200-gzip
超文本传输协议(HTTP)参数-IANA
IIS7.5比以前的版本更加严格地遵守标准。
更新:
进一步挖掘产生了该论坛讨论:
线程:IIS 7.5接受编码失败,出现多个值