ten przekierowuje żądania z tymczasowego 302 HTTP kodem stanu:HttpServletResponse sendRedirect stałe
HttpServletResponse response;
response.sendRedirect("http://somewhere");
Ale czy to możliwe, aby przekierować ją na stały kod stanu HTTP 301?
ten przekierowuje żądania z tymczasowego 302 HTTP kodem stanu:HttpServletResponse sendRedirect stałe
HttpServletResponse response;
response.sendRedirect("http://somewhere");
Ale czy to możliwe, aby przekierować ją na stały kod stanu HTTP 301?
Musisz ustawić status odpowiedzi i nagłówek Location
ręcznie.
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");
Ustawianie stanu przed sendRedirect()
nie będzie działać jako sendRedirect()
byłoby overridde go SC_FOUND
później.
Użyłem następującego kodu, ale nie zadziałało dla mnie.
String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.sendRedirect(newURL);
następnie próbowałem ten kawałek kodu to pracował dla mnie
String newURL = res.encodeRedirectURL("...");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newURL);
ten pracował dla mnie, miałem ten sam problem
To jest ta sama odpowiedź, co zaakceptowana. – z12345
'Wysyła tymczasową odpowiedź przekierować do klient używa podanego adresu URL przekierowania lokalizacji. Ok - masz rację. Właściwie myślałem, że będzie zachowywać się podobnie do działania z sendError po ustawieniu statusu. Stąd "ustawienia prób" w moim poście xD – chzbrgla
Funkcja 'sendError()' przyjmuje status jako argument, 'sendRedirect()' nie. Domyślnie ustawia 302, niezależnie od bieżącego statusu. – BalusC
Dziękuję, to działa. Aby zatwierdzić odpowiedź, należy również opróżnić bufor: 'response.flushBuffer();' – z12345