ASP.NET MVC의 Redirect () 대 RedirectPermanent ()


80

Redirect()과의 차이점은 무엇입니까 RedirectPermanent()? 기사를 몇 개 읽었지만 언제 Redirect()RedirectPermanent(). 몇 가지 예를 보여줄 수 있습니까?

답변:


147

이 둘의 기본적인 차이점 RedirectPermanent은 브라우저에 HTTP 301(영구 이동) 상태 코드 Redirect를 보내는 반면 상태 코드 는 보내는 것 HTTP 302입니다.

RedirectPermanent리소스가 영구적으로 이동되어 더 이상 이전 위치에서 액세스 할 수없는 경우 사용 합니다. 대부분의 브라우저는이 응답을 캐시하고 원래 리소스를 다시 요청하지 않고 자동으로 리디렉션을 수행합니다.

Redirect향후 동일한 위치 (URL)에서 리소스를 사용할 수있는 경우 사용 합니다.

시스템에 사용자가 있다고 가정 해 보겠습니다. 기존 사용자를 삭제할 수도 있습니다. 웹 사이트에는 /user/{userid}특정 사용자의 세부 정보를 표시 하는 리소스 가 있습니다. 사용자가 삭제 된 경우 /user/does-not-exist페이지로 리디렉션해야합니다 . 이 경우 :

사용자가 다시 복원 되지 않는 경우 URL이 다음을 가리키는 경우에도 RedirectPermanent브라우저가 /user/does-not-exist후속 요청에서 직접 이동할 수 있도록 을 사용해야 합니다./user/{userid} .

사용자가 나중에 복원 될 수있는 경우 일반 Redirect.



6
참고 RedirectPermanent두 번째는 당신이 클릭하기 때문에 디버깅하는 동안 성가신 될 수는 컨트롤러의 액션은 건너 뛰고 다른 곳에서 리디렉션 경우에는 브레이크 포인트는 원래 함수에 도달하지 않습니다. 클릭 할 때마다 캐시를 ​​비우지 않는 한 그렇습니다.
Antoine Pelletier

영구 리디렉션을 잘못 사용하는 실수를 한 적이 있다면 이미 방문하여 영구 리디렉션을받은 브라우저에이를 알리는 방법이 있습니까?
eaglei22

17

RedirectPermanent301이고 Redirect302 상태 코드입니다.


12
참고로 브라우저는 301을 기억하고 원하는 경우 원래 URL을 다시 조회하지 않을 수 있으며, 302는 리디렉션이 여전히 존재하는 경우 매번 다시 확인해야 함을 나타냅니다. 물론 실제 구현은 다를 수 있지만 이것이 301 및 302의 의도입니다
Michael Stum

1

브라우저에 다른 응답 코드를 보냅니다. 301은 영구 리디렉션이고 302는 임시 리디렉션입니다. 최종 효과는 동일하지만 클라이언트가 링크를 인덱싱하려는 경우 (이 작업을 수행하는 가장 일반적인 클라이언트는 검색 엔진이 됨) 영구 리디렉션은 클라이언트에게 이전 링크를 무시하고 새 링크를 사용하도록 레코드를 업데이트하도록 지시합니다. . 임시 리디렉션은 클라이언트에게 페이지가 현재 리디렉션 중임을 알리지 만 인덱싱 데이터베이스에서 이전 링크를 삭제하지는 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.