한 도메인에서 다른 도메인으로 리디렉션하고 다른 도메인에 대한 쿠키 또는 헤더를 설정하는 방법은 무엇입니까?
HTTP 리디렉션에서는 대상에 대한 사용자 정의 헤더 또는 쿠키 설정을 허용하지 않습니다. 도메인. 또한 브라우저는 Set-Cookie 헤더로 응답하는 도메인과 다른 도메인에 대한 쿠키 설정을 방지합니다.
해결 방법 1: 쿼리 매개변수로 리디렉션한 다음 쿠키 설정
- 다음에서 리디렉션 쿼리 매개변수로 전달된 액세스 토큰을 사용하여 도메인 A에서 도메인 B로.
- 도메인 B는 요청을 수신하고 토큰을 사용하여 자체 쿠키를 설정합니다.
해결책 2: Cross-Origin Window.postMessage()와의 통신
- 도메인 B를 가리키는 도메인 A에 숨겨진 iframe을 추가합니다.
- Window.postMessage()를 사용하여 도메인 B에 액세스 토큰을 보냅니다.
- 도메인 B는 localStorage에 토큰을 저장하거나 JS를 사용하여 쿠키를 설정합니다.
- 도메인 A에 토큰이 저장되었음을 알리고 사용자를 도메인 B로 리디렉션합니다.
해결 방법 3: 서버 측 토큰 교환
- 도메인 A에서 태그를 사용하여 액세스 토큰을 쿼리 매개변수로 사용하여 도메인 B를 가리킵니다.
- 도메인 B는 다음으로 응답합니다. 요청 수신 시 쿠키 헤더를 설정합니다.
- 가져오기 또는 XMLHttpRequest(자격 증명 및 CORS 활성화)를 사용하여 토큰을 도메인 B로 직접 보냅니다.
- 도메인 B는 액세스 수신 시 쿠키를 설정합니다. token.
중요 사항:
- 솔루션 2와 3이 작동하려면 브라우저 설정에서 모든 쿠키를 활성화해야 합니다.
- SameSite=없음 사용; 솔루션 3에 대한 쿠키의 보안 플래그입니다.
- 솔루션 1의 쿼리 문자열은 액세스 토큰을 노출하고 보안 위험을 초래합니다.
- 솔루션 3을 사용하려면 대상 도메인에서 CORS를 활성화하고 도메인에서 명시적인 원본 사양을 지정해야 합니다. 서버 측.