초기에는 ajax를 이용해서 로그인 방법을 쉽게 했는데, 로그인하기 전에는 세션에 값이 있는지 판단하고, 없으면 로그인할 필요가 없었다. , 로그인할 수 있는 로그인 페이지가 나타납니다. ff 브라우저를 사용하고 있기 때문에 아무런 문제도 발견되지 않았습니다. 지난주에 사용자들에게 제출했을 때 IE로 로그인한 후 유효하지 않다고 나와 충격을 받았습니다. 결과는 정말 이렇습니다. . 매우 당혹스럽다
로그인 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
//세션이 존재하는지 서버로부터 쿼리
j.아약스({
유형:GET,
URL:sessioncheck.asp,
데이터:,
시간 초과: 1000,
오류: 함수(){
Alert('죄송합니다. 지금 서버가 바빠요!');
},
성공:함수(comments_data){
if(comments_data == 1){
el.createDialog(opts);
j.startOver();
}
또 다른{
var sql = selectSQL(검색키, 유형);
window.location.href = SQL;
}
}
});
Sessioncheck.asp는 세션을 확인하는 것에 지나지 않습니다. 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
세션(사용자 이름) = 그렇다면
응답.쓰기(1)
또 다른
응답.쓰기(2)
종료하면
결과적으로 IE의 세션(사용자 이름)이 쓸모 없게 되고, 시간 제한 설정도 쓸모 없게 됩니다.
오랫동안 온라인으로 확인해 보니 비슷한 문제가 꽤 많이 있는 것으로 나타났습니다. 마침내 원인은 캐시 문제였습니다.
비동기 get을 얻을 때 URL이 변경되지 않은 상태로 유지되면 캐시의 정보가 직접 호출되므로 세션의 값을 얻지 못하게 됩니다.
해결책은 매우 간단하며 Google ASP 캐시를 많이 지웁니다.
마지막으로 sessioncheck.asp에 다음과 같은 단락이 추가되었습니다.
다음과 같이 코드 코드를 복사합니다.
응답.버퍼 =참
Response.ExpiresAbsolute =지금() - 1
응답.만료=0
Response.CacheControl=캐시 없음
세션(사용자 이름) = 그렇다면
응답.쓰기(1)
또 다른
응답.쓰기(2)
종료하면