2011-03-18 71 views
1

我正在使用XMLHttpRequest level2進行跨源請求。 問題是如果服務器返回一個錯誤代碼,如409瀏覽器不允許我訪問服務器返回的響應文本。 因此,如果服務器與消息返回409:「你不能再這樣做」 我只得到在客戶端的409,但xhr.responseText是空的...跨源4xx錯誤響應被阻止

這是一部分規範或我錯過了一個頭或什麼?

回答

2

爲了補充monsur所說的,這個規範在這個特定的用例中並不完全清楚,但是如果你看一下7.3節。處理跨源請求狀態,它會指示實施者「確保不透露關於請求的任何進一步信息」以解決各種錯誤。雖然這可能看起來過於保守,但你也可以爭辯說這是一個好的/安全的最佳實踐。參見:http://www.w3.org/TR/cors/#cors-api-specification-response

2

我相信這是CORS過於保守的瀏覽器實現的結果。我甚至在Safari中注意到,在引發錯誤時statusCode爲0,而不是實際的HTTP狀態。我不認爲有什麼你可以做的,直到瀏覽器拋光onError的情況。如果您擁有服務器的控制權,則可以始終返回HTTP狀態200,然後將錯誤代碼放在主體中。如果你想使用更標準的東西,JSON-RPC(http://json-rpc.org/)會這樣做。

相關問題