我有一個網站使用訂單輸入表單,並在提交表單時發送尺寸相當大的POST請求。通過HTTP POST發送什麼特定數據可能導致HTTP 504錯誤?
然而,當一個特定的值在我們的表單變量(的OrderDetail),每次一個被傳遞沒有失敗,它會在瀏覽器中的錯誤頁面,並通過一個提琴手504錯誤。
以下是我昨晚通過Fiddler發送POST請求的一些測試示例。當「的OrderDetail =」值更改爲下面的它要麼成功提交或幾秒鐘後返回504錯誤:
這些那些失敗:
- &的OrderDetail =交付+令狀+的+執行%3B +和+應用程序+對於+收入+預扣+訂單+到+洛杉磯+洛杉磯+縣+警長+ DASH +法院+服務+部門+每指令
- & OrderDetail =交付+執行+收入+預扣+ Order + to + Los + Angeles + County + Sheriff + DASH + Court + Services + Division + per + instructions
- & OrderDetail =交付+寫入+執行%3B +和+應用程序+ +收入+預扣+訂單+至+洛杉磯+洛杉磯+縣+警長
- & OrderDetail =交付+寫入+執行%3B +對於應用+ +收益+預提+訂單+到+洛杉磯+洛杉磯+縣+警長
- &的OrderDetail = +訂單+洛杉磯+洛杉磯+縣+ +預提+執行令狀+警長
- &的OrderDetail =令狀+執行+ adsfsdfsdfsd +訂單+縣
- &的OrderDetail = WD +執行+ adsfsdfsdfsd +訂單+計數
這讓我想到或許它與單詞「Exec」('Exec'和'Execution'throw errors,'exe'does not)和「Count」('County'and'計數」拋出錯誤,‘續’不)
不過,我還沒有看到任何這種特定的有關504錯誤的谷歌搜索提及。
關於解決這個問題的ColdFusion代碼,對於此頁沒有任何幻想。只是一個標準的形式發佈。我在應用程序文件中添加了一個cfmail測試,並且這些失敗永遠不會運行,所以這似乎在瀏覽器和IIS之間。我們在共享服務器上,所以我看不到太多,但。
奇怪的是,當&的OrderDetail =參數被改變爲這些值(非常類似於上述)中的一個,其結果是成功:
- &的OrderDetail = WD +執行+ adsfsdfsdfsd +訂單+ COUN
- &的OrderDetail = WD +執行+ adsfsdfsdfsd +訂單+ Conty
- &的OrderDetail =令狀+ +的預提+訂單+執行+洛杉磯+洛杉磯+縣警長+
- 預提的的OrderDetail =令狀+ + + ExecutionOrder洛杉磯+洛杉磯+縣警長+
在第三一個,我把 '訂單' 前 '執行' 和它的工作原理..
總長度這個POST請求的大約是4720個字符。我將這個字段的長度增加到其長度的5-6倍,並且他們通過了,所以它似乎與POST中「& OrderDetail」參數的值相關聯。
有關爲什麼此特定數據可能成爲Web服務器問題的任何想法?我從來沒有見過這種情況,對於幾乎所有其他請求都不會有任何問題。
還有一個有趣的提示:在POST請求中,這個變量非常接近參數列表的開始。如果我刪除它後面的所有內容,它沒有問題。雖然我無法確定下一行可能導致它的原因。如果有幫助,我可以發佈整個請求。
更重要的是,我只是想知道什麼可以符合FORM數據的「保留」或「非法」。一切看起來都正確地逃脫了,所以我不確定除了一些預處理的javascript之外還有什麼可以做的,以進一步逃避任何這樣的話。
謝謝!
504是「網關超時」,它應該是完全不相關的。這是可重複的嗎? – bzlm
如果您將接收POST的CFM模板修改爲CFDUMP表單範圍,然後中止,那麼您是否仍然收到錯誤?這將有助於隔離它是否是CF的上游引起的,或者是代碼中的某些內容。 –
繼Adam的評論之後,如果修改CFM模板不會改變任何內容,請查看Application.cfc或Application.cfm(因爲它們可以在模板被調用之前執行代碼)。 –