文章編號: 203298 - 上次校閱: 2007年12月3日 - 版次: 4.3 PRB: CGI 應用程式掛在 IIS 4.0 和之上使用 POST
徵狀通用閘道介面 (CGI) 應用程式正常運作下 Microsoft 網際網路資訊伺服器 (IIS) 3.0 與 HTTP POST 方法,就會出現以掛在 IIS 4.0 和之上。CGI 使用 HTTP GET 方法仍能運作正確。 發生的原因典型的案例是 4.0 和上方,升級 Microsoft 網際網路資訊伺服器 3.0,而且所有或某些 CGI 應用程式突然停止回應時使用 POST 方法呼叫出現。 最可能的原因是有問題 CGI 未正確地寫入。在某些情況下不正確地撰寫的 CGI 與 IIS 3.0 或更早版本,可以正常運作,但會出現要中斷與 IIS 4.0 及以上。其原因是該 IIS 3.0,稍早已經 [更容錯的不正確地撰寫的 CGI 應用程式。瀏覽器喜歡 Internet Explorer 且 Netscape 導覽器會附加翼傳回 + 線條送紙 (CRLF) 組到任何已張貼的資料結尾。IIS 3.0 版和較早會將這個額外的 CRLF 組傳遞用 CGI 應用程式,使得撰寫的 CGI 使用 IIS 3.0 或更早版本會根據這個額外 CRLF (也就是對抗 CGI 和 HTTP 規格)。 不過,在 IIS 4.0 和讀取標準輸入和等候 CRLF 字元,以表示 「 已張貼資料時是完成上述任何 CGI 應用程式執行會擱置直到逾時,就會發生或使用者中止工作階段。這是因為 IIS 4.0 版及上方將不再傳送額外 CRLF 組上 CGI 應用程式。 下列的 CGI 的程式碼範例是典型的這個問題: 解決方案正確的解決方案是重寫 CGI 應用程式,因此它會遵守 CGI 及 HTTP 規格。通常,有兩個問題來處理:
而且,CGI 應用程式必須知道的預設標準輸入將會有它的模式設定為文字資料流的事實。這表示如果張貼的資料中包含任何執行個體的 CRLF 它會自動轉換為只送紙 (LF) 的線條。這將會改變已張貼資料的實際長度。兩個字元 (CRLF) 將被轉換成單一字元 (LF)。因此,[CGI 前必須設定模式二進位檔的標準輸入上嘗試讀取它。 下列的 CGI 的程式碼範例是正確的 CGI 應用程式: 狀況說明這種行為是經過設計規劃的。 其他相關資訊從 HTTP 1.1 規格 (RFC2068): 注意: 某些錯誤的 HTTP/1.0 用戶端實作產生額外的 CRLF POST 要求之後。若要 restate 什麼明確禁止 [BNF,HTTP/1.1 用戶端必須不前面引用或遵循額外 CRLF 的要求。 這表示伺服器應用程式無法依賴用戶端傳送額外 CRLF。 您也應該注意類似的問題可能導致指令碼,以及可執行檔。雖然執行實際產生正確的指令碼行為的指令碼之前,一些指令碼解譯器在內部可能緩衝區向上張貼的資料,指令碼應該遵守正確的行為。 ?考Microsoft 提供協力廠商連絡資訊可協助您尋找技術支援。此連絡人資訊若有變更恕不另行通知。Microsoft 不保證此第三方連絡資訊的正確性。 在通用閘道介面 1.1 規格的更多資訊請參閱在下列網站: http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
(http://hoohoo.ncsa.uiuc.edu/cgi/interface.html)
在 HTTP 1.1 規格 (RFC 2068) 上的更多資訊請參閱在下列網站: ftp://ftp.isi.edu/in-notes/rfc2068.txt
(ftp://ftp.isi.edu/in-notes/rfc2068.txt)
這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:203298?
(http://support.microsoft.com/kb/203298/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方
