2014-02-11 74 views
0

我正在發出一個CORS請求,它返回一個帶有位置標題的202空響應以查詢數據。CORS XHR重定向不起作用

但瀏覽器未重定向到位置標題中的網址。在Chrome/Firefox上試用過,它也一樣。

jQuery.ajax(url, options).done((result: any) => {       
        }); 

.done後得到響應202立即調用

回答

2

看一看HTTP規範,特別是this part

14.30位置

位置響應頭字段用於重新定向 收件人到請求或識別的完成 以外的其他位置一個新的資源。對於201 (創建)響應,該位置是由請求創建的新資源的位置 。 對於3xx響應,位置SHOULD 指示服務器的首選URI 用於自動重定向到 資源。字段值由一個絕對URI組成。

由於自動重定向僅針對3xx響應(實際上我已經檢查過整個規範),因此它意味着對於任何其他狀態代碼它都依賴於瀏覽器。 Wikipedia還證實:

提供關於新創建資源的位置信息。 在這種情況下,Location頭應與201或202

我認爲它是安全的假設,這是瀏覽器只是如何工作的HTTP 狀態代碼發送。您將不得不手動重定向。

+0

這很好理解。不幸的是,瀏覽器不讓我閱讀標題。我有Access-Control-Expose-Headers:*設置。我非常肯定CORS規範是否允許使用通配符。 – user460025

+0

@ user460025我認爲''Access-Control-Expose-Headers'應該是逗號分隔的標題列表,它不允許使用'*'。嘗試一下。如果沒有幫助,我不知道如何幫助你,對不起。 – freakish