2013-10-21 26 views
0

我在我的嵌入式Jetty應用程序中使用Jersey。我有一個重定向的那樣:Jersey + Embedded Jetty使用HTTP 200代碼重定向

URI uri = URI.create(url); 
return Response.seeOther(uri).build(); 

seeOther是這樣的:

public static ResponseBuilder seeOther(URI location) { 
    ResponseBuilder b = status(Status.SEE_OTHER).location(location); 
    return b; 
} 

但是,這種重定向有303代碼。如果我明確設置位置並傳遞200 OK,它不會重定向。

當我有200 OK狀態時,如何重定向頁面?

回答

0

我會說這是一個HTTP重定向的預期行爲發送303

0

你不能。狀態301/302/303/307是發送給客戶端的重定向的http方式。

的機制如下:

  1. 客戶端訪問服務器上的資源
  2. 服務器響應與狀態307和位置:頭指向重定向目標
  3. 客戶端訪問URI由位置提供:頭。
  4. 這一次,服務器通常會返回狀態爲200的所需內容。但這不是您的代碼所關注的內容。

如果您遺漏了307(或301/302/303)狀態碼,客戶端將無法理解它應該如何處理位置:標頭。

有關狀態碼預期行爲的詳細信息,請參閱http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - 您可能還會發現301(MOVED)或307(TEMPORARY_REDIRECT)覆蓋了大多數情況。 303的(SEE_OTHER)在我的經驗中很少見。