Iframe 에서 쿠키 와 세 션 을 어떻게 크로스 오 버 하 는 지 에 대한 해결 방법

2757 단어 IframeCookieSession
최근 에 로그 인 시스템 의 통합 을 했 는데 그 중에서 가장 관건 적 인 문 제 는 하나의 통 일 된 백 스테이지 에서 다른 시스템 백 스테이지 에 무장 애 로 방문 해 야 한 다 는 것 이다.이 시스템 은 제3자 가 제공 한 과 밀 시스템 이다.백 스테이지 자동 로그 인 인 인 터 페 이 스 는 자신 이 분석 한 것 이 고 따로 제공 하지 않 았 다.통 일 된 백 스테이지 에서 자동 로그 인 인 인 터 페 이 스 를 통 해 로그 인 할 때시스템 은 시스템 백 스테이지 첫 페이지 로 바로 이동 합 니 다.백 스테이지 로그 인 에 성공 한 후 이동 하 는 URL 은 지정 할 수 없고 이동 을 제어 할 수 없 는 페이지 입 니 다.만약 에 통 일 된 백 스테이지 에서 이 시스템 백 스테이지 의 다른 페이지 로 연결 해 야 합 니 다.백 스테이지 기본 홈 페이지 가 아 닌 제3자 시스템 백 스테이지 의 메뉴 기능 을 우리 의 통 일 된 백 스테이지 에 넣 는 것 입 니 다.
이러한 수요 에 대해 서 는 문제 가 발생 할 수 있 습 니 다.제3자 시스템 의 배경 프로그램 에 정상적으로 접근 하기 위해 서 는 시스템 에 로그 인 했 는 지 확인 해 야 합 니 다.그렇지 않 으 면 사용자 에 게 로그 인 을 알 릴 수 있 기 때문에 이 메뉴 링크 를 클릭 할 때 시스템 은 반드시 로그 인 해 야 합 니 다.
이 문 제 를 해결 하기 위해 페이지 머리 에 보이 지 않 는 iframe 을 추가 하여 자동 로그 인 인터페이스 로 가 리 킵 니 다.이 인 터 페 이 스 는 브 라 우 저 주소 표시 줄 을 통 해 정상적으로 접근 하면 사용자 이름과 비밀번호 검증 이 잘못 되 지 않 았 을 때 시스템 배경 첫 페이지 로 이동 합 니 다.이 때 보이 지 않 는 IFRAME 에 놓 여 있 기 때문에 현재 배경 페이지 로 이동 하 는 데 아무런 영향 이 없습니다.내 설계 방법 에 따 르 면 시스템 은 정상적으로 사용 할 수 있 을 것 이다.
그러나 말 한 이상 틀림없이 문제 에 부 딪 혔 을 것 이다.그렇지 않 으 면 이곳 에 이렇게 큰 전환 이 오지 않 을 것 이다.
그러나 여기 서 는 각 시스템 이 서로 다른 시스템 에 속 하고 도 메 인 이름 이 다 르 기 때문에 Iframe 이 IE 에서 제3자 시스템 쿠키 를 정상적으로 생 성하 지 못 하 는 경우 가 발생 하지만 Firefox 와 다른 브 라 우 저 에서 모두 생 성 할 수 있 기 때문에 IE 로 접근 할 때 항상 로그 인 페이지 로 이동 합 니 다.
여기에 설명 이 필요 합 니 다.이곳 의 제3자 시스템 은 우리 자신의 서버 에 놓 여 있 습 니 다.단지 모든 소스 코드 가 비밀 로 되 어 있 을 뿐 입 니 다!
마지막 으로 관련 자 료 를 찾 아 보 니 IE 에서 안전 을 위해 IFRAME 를 통 해 제3자 도 메 인 이 생 성 되 는 COOKIE 를 막 았 고,이 문 제 를 해결 하기 위해 MS 는 HTTP 의 HEADER 헤드 에 P3P 라 는 헤드 를 설정 하면 IFRAME 를 통 해 제3자 COOKIE 를 생 성 할 수 있 도록 규정 했다.
PHP 에서 P3P HEADER 헤드 를 설정 하 는 방법 은 다음 과 같 습 니 다.
header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);
메모:이 P3P 는 제3자 도 메 인 에 쿠키 를 생 성 하 는 파일 을 추가 해 야 유효 합 니 다.그렇지 않 으 면 도움 이 되 지 않 습 니 다.
여기 또 문제 가 생 겼 습 니 다.제3자 시스템 생 성 COOKIE 는 백 스테이지 에 있 는 admin.php 라 는 페이지 에서 생 성 되 었 습 니 다.이 페이지 는 또 비밀 을 넣 었 습 니 다.어떻게 해 야 할 지 오래 생각 했 습 니 다.마지막 으로 동료 들 은 우리 자신의 파일 로 그것 을 포함 할 수 있다 고 영감 을 얻 었 습 니 다.자,이 방법 은 정말 절묘 하 다.왜 나 는 생각 하지 못 했 을 까?동료 들 은 정말 재능 이 있다.정말 탄복 하 는 오체투지 이다.물론 나 는 그 에 게 이렇게 탄복 했다.그 에 따 르 면 그 는 자신 도 그날 밤 자신 에 게 탄복 했다 고 한다.
그래서 마지막 해결 방안 은 원래 의 admin.php 파일 을 admin 이 라 고 명명 하 는 것 입 니 다.2.php,그리고 admin.php 를 새로 만 듭 니 다.마지막 으로 이 파일 에 위 에 있 는 P3P 라 는 HEADER 헤드 를 추가 하고 admin 을 다시 포함 합 니 다.2.php 이 파일 의 최종 코드 는 다음 과 같 습 니 다.
header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);include “admin_2.php”;
마지막 으로 문 제 는 철저히 해결 하 자!
여기 서 제목 은 COOKIE 와 SESSION 의 문제 입 니 다.실질 적 으로 는 기본적으로 같 습 니 다.SEESION 의 최종 보존 도 SESSION 을 통 해 이 루어 집 니 다.ID 를 COOKIE 원본 하늘 에 저장 하고 이 SID 를 통 해 서버 에 해당 하 는 SEESION 데 이 터 를 찾 습 니 다.COOKIE 에 있 는 SEESION 을ID 라 는 COOKIE 가 지우 면 SESSION 도 효력 을 잃 게 됩 니 다.

좋은 웹페이지 즐겨찾기