단일 ASP.NET 웹 사이트에서 여러 도메인간에 세션을 공유하는 방법은 무엇입니까?
-
08-09-2020 - |
문제
도메인간에 세션 쿠키를 공유하고 싶습니다.
하나 이상의 도메인이 있습니다. -
1. mydomain.com
2. mydomain.fr
3. mydomain.de
4. mydomain.da
...and many other language based
.
이제 서버에 단일 웹 사이트가 배포되었습니다. 단일 웹 사이트의 다른 도메인간에 세션을 공유하고 싶습니다.어떻게 이것을 달성합니까?
Web <httpCookies domain=".mydomain.com" />
에서 발견되었지만 (test.mydomain.com
및 secure.mydomain.com
와 같은) 하위 도메인과 함께 작동하지만 다른 도메인에는 작동하지 않습니다.
<httpCookies domain=".mydomain." />
를 시도했지만이 세션이 작동 중지되었습니다.
누구도 나를 도와 주실 수 있습니까?
해결책
다른 최상위 도메인 이름이있는 도메인에 쿠키를 공유 할 수 없습니다.
이것은 "Nofollow"> 하위 도메인 와 함께 할 수 있습니다.
mydomain.com
fr.mydomain.com
de.mydomain.com
da.mydomain.com
...
. 다른 팁
다른 도메인간에 쿠키를 직접 공유 할 수 없습니다.그러나 어떤 맥락에서 가능한 한 가지 방법이 있습니다.JSONP 요청을하거나 JS에 iFrame을로드 할 수 있습니다.iframe을 사용하는 경우 양식을 사용하여 HTTP 게시물 호출을 만듭니다.양식 태그는 다른 도메인 이름을 대상으로서 동작과 iframe 이름으로 만듭니다.어떤 양식이 할 것입니까? ifram을로드하고 다른 도메인의 쿠키가 브라우저에 올 것입니다.
코드 :
<iframe name="iframe-test" border="1px"></iframe>
<form id="iframe-form" target="iframe-test" action="http://differentdomain.com/setCookie" method="POST">
<input type="hidden" value="1234" name="token">
</form>
<script type="text/javascript">
function submitForm(){
var form = document.getElementById("iframe-form");
form.submit();
}
</script>
. ODED 상태로서 다른 최상위 도메인에서 쿠키를 공유 할 수 없습니다. 그러므로 세션을 지속시키는 다른 방법을 살펴 봐야 할 수도 있습니다.
Danyolgiax로 세션 상태 제공자를 교환하면 세션 식별이 아직 쿠키가 발생하는 경우 문제가 해결되지 않습니다. 따라서 쿠키가없는 세션과 같은 접근 방식을 살펴볼 필요가 있습니다.
cookieles 세션 / P>
다음 서버에 데이터베이스 또는 InProc 세션에 데이터를 저장하도록 선택할 수 있습니다. 쿠키에 대한 종속성을 제거하면
편집
또한 쿠키가 절대적으로 필요로하는 비 인증 쿠키를 사용하여 일부 클라이언트 활동이있는 경우 이러한 서버 / 세션 저장된 값을 기반으로 각 다른 도메인에서 작성합니다. 따라서 사용자 전환 도메인은 결국 당신을 얻습니다 각 도메인에 대한 쿠키.
SQL Server를 사용하는 경우 세션 상태 제공자로 사용할 수 있다고 생각합니다.
web.config :
<sessionState
mode="SQLServer"
sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
cookieless="false"
timeout="20"
/>
.
여기서 일부 doc :