我有一台运行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>
答案 0 :(得分:1)
问题在于您的Accept-Encoding:
标头。最后两个Content-Codings无效:
application/octet-stream application/x-www-form-urlencoded
根据IANA允许的内容编码值,您只能使用:
compress deflate exi gzip indentity pack200-gzip
IIS7.5比以前的版本更严格地遵守标准。
<强>更新强>
进一步挖掘产生了这个论坛的讨论: