缺少代理服务器的POST参数

Jan*_*ing 7 proxy http-post

我们的Web应用程序遇到了一些奇怪的行为.有些POST请求没有任何http正文.content-length为0.根本没有post参数.我们在我们的负载均衡器上跟踪网络流量,我们发现我们没有得到任何请求正文和我们的一些POST请求.

所有损坏的POST请求都有共同点,它们通过代理服务器到达.

我们已经在SO上找到了这个问题: 为什么POST请求中的"Content-Length:0"?

我们现在使用帧转义javascript例程,它有点帮助.似乎错误率下降.但是我们仍然有POST请求没有数据,这些数据在我们的webapp中永远不会发生.这些请求不是来自黑客或类似的.

我们经常看到webwasher作为代理.但大多数时候我们都没有看到使用了哪个代理.

在这篇PDF中,我们看到了关于使用webwasher缺少POST参数的评论

WebWasher - 透明认证指南

关于一些陷阱的说明

请注意,在设置透明身份验证时必须考虑一些缺陷:

如果ICAP服务器将重定向发送到身份验证服务器,则POST请求将失败.但是,这仅影响映射的更新,因为对于浏览器,请求成功,并且在最终重定向之后将不再发送POST正文.

我们想知道是否除了仅使用GET而不是POST之外还有一些解决方法.如果其他网站在POST数据丢失方面存在问题以及他们做出了哪些结论,我们也会在这里.

是否还有其他原因导致POST数据未发送?

Bra*_*uce 2

我遇到了 Microsoft 代理服务器无法很好地处理 Web 请求的问题。

我不得不强制使用 HTTP/1.0 并将 KeepAlive 属性设置为 false。

NTLM 身份验证的工作方式存在一些问题,会导致正文偶尔发送。

我已将此添加到我的许多网络请求中

protected override WebRequest GetWebRequest(Uri uri)
{
    HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);

    webRequest.KeepAlive = false;
    webRequest.ProtocolVersion=HttpVersion.Version10;
    return webRequest;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!