2011-04-01 41 views
6

我們遇到了一些奇怪的行爲與我們的Web應用程序。一些POST請求在他們應該的時候沒有任何http主體。 content-length是0.根本沒有post參數。我們追蹤了負載均衡器上的網絡流量,並發現我們沒有收到任何有關POST請求的請求。缺少代理服務器的POST參數

所有中斷的POST請求有共同點,他們通過代理服務器到達。

我們已經發現了所以這個問題: Why "Content-Length: 0" in POST requests?

我們現在使用的是框架逃脫JavaScript例程,它可以幫助一點。看來錯誤率下降。但是我們仍然有POST請求,但沒有數據,這在我們的Web應用程序中不會發生。這些請求不是來自黑客或類似的。

我們經常將webwasher視爲代理。但大部分時間我們都看不到使用哪個代理。

在這個PDF,我們看到了一個評論關於與Webwasher等上的一些缺陷

注意,有一些缺陷,必須考慮到

WebWasher - Transparent Authentication Guide

票據丟失POST參數設置時up透明認證:

如果ICAP服務器發送重定向到認證服務器,POST請求將失敗。但是,這隻會影響映射的更新,因爲對於瀏覽器而言,請求已成功完成,並且POST正文在最終重定向後不會再發送。

我們想知道是否有一些解決方法,而不是僅使用GET而不是POST。 我們也會在這裏,如果其他網站有問題,缺少POST數據和他們的結論。

有沒有其他原因爲什麼POST數據不發送?

回答

2

我的微軟代理服務器出現了與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; 
} 

希望這有助於!

+0

嗯,我們不使用NTLM,但我認爲你的提示是朝着正確的方向。 – Janning 2011-05-25 06:54:19

-1

任何人的,其符合spec

一些HTTP方法必須引起緩存無效的實體。 ... POST

(的HTTP/1.0規範規定 '應用程序必須不緩存響應POST請求')。

但是這裏有很多糟糕的代碼。

你在郵件的回覆中包含哪些標題?

+0

它不依賴於我們的頭,也沒有涉及到規範。有時它有時不起作用。這似乎與webwasher等糟糕的代理服務器有關。所以我寧願投下這封郵件,因爲這與我的問題無關,也沒有任何幫助。 – Janning 2011-04-04 06:12:02

0

我猜不是一個真正的答案,但我到了這裏是因爲我們有類似的問題。起初,我們認爲這是由於客戶是移動的,因爲這是一個共同的主題,但我們現在已經意識到,共同點是代理人。

我們現在提出http 400。

以下是一些代理,我們遇到了問題。張貼在這裏引領休閒Google員工:

  • 1.1 ACISA02S, 1.1 abc:3328 (squid/2.6.STABLE21)
  • 1.1 ipcop00.cat.local:8000 (squid/2.6.STABLE21)
  • 1.1 PRXTGLSRV01
  • 1.1 ISA