我有時會收到一個錯誤,當我將一些參數傳遞給某個URL時,應該將某個有效請求定義爲「400 OK」。什麼會導致HTTP發送回「400 OK」
相同的URL和參數將在99%的時間內工作,但我在日誌中看到錯誤。
這是一個晦澀的事情,可能會發生由於某些因素或是特定於我的應用程序導致奇怪的標頭的混雜的東西嗎?我猜是後者,如果沒有答案,前者:)
UPDATE
的意見,「它」是寫一個比較簡單的RESTful API。現在它幾乎總是將正確的標題(如400和錯誤的正文)或正文(正文)正確地返回給200。當一個錯誤的標題發送給Web客戶端時,Web客戶端會使用所收到的消息來ping報告URL,以便我們可以區分我們的Web應用程序和移動應用程序之間的API錯誤。據我們所知,沒有可以使這個「400 OK」地獄的代碼組合。但由於看起來不可能發生在我們的代碼之外,所以我會深入研究一下。
更新2
好吧,我已經鑽研深入到我們的框架,比我有很長一段時間,並與一些開發者發言。
它通過AJAX調用將API返回給瀏覽器。
瀏覽器檢測到「400 OK」並將其發送回我們的服務器,在那裏我們得到這個奇怪的報告。沒有人看到這種情況發生在他們的眼睛上,但日誌表示正在發生。
有字面上零代碼中我們的代碼庫,將返回400 OK,因爲在我們的HTTP報頭處理程序的唯一400「400錯誤的請求」
現在我不知道是否有一些瀏覽器/ jQuery的/ AJAX的bug我迷迷糊糊進了。
更新3(因爲你不能有太多的信息)
我檢查瀏覽器是如何看待什麼是錯的。 jQuery $ .ajax報告的失敗時會觸發回調。然後,我們有這樣的代碼:
xhr.always(function() {
var request = [ this.type, this.url, this.data ].join(' '),
response = [ xhr.status, xhr.statusText, xhr.responseText ].join(' ');
$.ajax({
url : REPORTING_URL,
type : 'POST',
data : { request : request, response : response }
});
});
而且我們知道這部作品的「最」的時候,因爲我們也從這些AJAX收到「400錯誤」迴應稱
UPDATE 4
我只注意到,字面上所有的錯誤來自用戶代理:
Mozilla webkit etc...... AdobeAIR/1.5.3
這是一個非常舊的版本
我們的AIR應用程序只有我們的網絡應用程序的iframe。我只能想象那裏發生了什麼。
它不能發回「400 OK」。這不是一個HTTP狀態碼。它可以發回「400」(錯誤的請求)。什麼對待它「確定」?也許顯示*真實*迴應標題將是有遠見的。 – 2012-08-01 21:25:49
當然它可以發回「400 OK」。 「它」可以發送任何「它」喜歡的東西。他甚至沒有說出「它」是什麼!也許他自己實施了「它」。 – arkascha 2012-08-01 21:28:02
@pst爲什麼呢?如果你實現它,你可以發送任何你想要的頭文件。 – arkascha 2012-08-01 21:29:33