302 리디렉션 중 브라우저 쿠키 보내기
302 리디렉션 중에 쿠키를 다시 보내는 데 문제가 있습니까? 예를 들어 URL로 돌아가는 쿠키를 만들고 동일한 응답으로 사용자를 리디렉션하면 (최신) 브라우저가 쿠키를 무시합니까?
대부분의 브라우저는 302 리디렉션에서 쿠키를 허용합니다. 나는 그것을 확신했지만 약간의 검색을했다. 모든 최신 브라우저는 아닙니다 . Silverlight Client HTTP Stack의 인터넷 아카이브 링크가 제거됨 / 죽음 / Microsoft 연결 Q / A 에서 302 리디렉션 응답에서 Set-Cookie 무시 (2010)
이제 IE6 대신 Windows Mobile 브라우저가있는 것 같습니다.
이 블로그 게시물에 따르면 : http://blog.dubbelboer.com/2012/11/25/302-cookie.html 모든 주요 브라우저, IE (6, 7, 8, 9, 10), FF (17), Safari (6.0.2), Opera (12.11)는 Windows와 Mac 모두에서 리디렉션에 쿠키를 설정합니다. 이는 301 및 302 리디렉션 모두에 해당됩니다.
하나의 알림 (개발자의 생명을 구하기 위해)
IE와 Edge는 쿠키의 도메인이 localhost 일 때 리디렉션 응답에서 Set-Cookie를 무시 합니다.
해결책:
localhost 대신 127.0.0.1 을 사용하십시오 .
다음 은이 문제에 대한 Chromium 버그입니다 (상태 302 인 HTTP 응답에 대해 Set-cookie 무시 됨).
이것은 접근 방식에 대해 정말 눈살을 찌푸리고 있지만, 30x 쿠키 설정 브라우저 동작에 정말로 의존하지 않으려면 쿠키를 설정할 meta http-equiv="refresh"때 HTML "리디렉션"을 사용할 수 있습니다 . 예를 들어, PHP에서 :
<?php
...
setcookie("cookie", "value", ...);
url="page.php";
?>
<html>
<head><meta http-equiv="refresh" content=1;url="<?=$url?>"></head>
<body><a href="<?=$url?>">Continue...</a></body>
</html>
서버는 적절한 300x 리디렉션 대신 200으로 Set-Cookie를 전송하므로 브라우저는 쿠키를 저장 한 다음 "리디렉션"을 수행합니다. 이 <a>링크는 브라우저가 메타 새로 고침을 수행하지 않는 경우에 대비 한 것입니다.
제 경우에는 CookieOptions.Secure = true로 설정 했지만 http : // localhost 에서 테스트 했으며 브라우저는 설정에 따라 쿠키를 숨겼습니다.
이러한 문제를 피하기 위해 프로토콜 Request.IsHttps와 일치하도록 쿠키 보안 옵션을 만들 수 있습니다.
new CookieOptions()
{
Path = "/",
HttpOnly = true,
Secure = Request.IsHttps,
Expires = expires
}
참고 URL : https://stackoverflow.com/questions/4694089/sending-browser-cookies-during-a-302-redirect
'program story' 카테고리의 다른 글
| JDBC의 명명 된 매개 변수 (0) | 2020.11.08 |
|---|---|
| C #에서 문자열과 StringBuilder의 차이점 (0) | 2020.11.08 |
| cells (1,1)을“A1”로 또는 그 반대로 변환 (0) | 2020.11.08 |
| 숫자를 '색인'(JSON)으로 사용 (0) | 2020.11.08 |
| Spring + Web MVC : dispatcher-servlet.xml 대 applicationContext.xml (공유 보안 포함) (0) | 2020.11.08 |