반응형
로그인 페이지에 캡챠가 적용되어 있다. '새로고침'을 누르면 당연히 캡챠가 새로고침 되어야 한다. 물론 내가 할 땐 잘됐다. 그런데 테스트를 해보시더니 캡챠 문자열 새로고침이 안된다고 한다.
"아이폰에서 안되요."
처리 프로세스
- 서버로 캡챠 새로고침을 요청한다.
- 이미지 element의 src attribute에 캡챠 이미지를 세팅한다.
- '/capcha/image' API 에서는 세션에 저장된 캡챠값을 이미지로 생성하여 반환한다.
$.ajax('/captcha/refresh').done(function () {
imgElement.attr('src', '/captcha/image');
});
그런데 아이폰(=사파리=웹킷 엔진)에서는 이미지가 새로고침 되지 않았다.
오류 해결
여러가지 테스트를 해보니, 웹킷 엔진에서는 img src 값이 수정되지 않는 이상 캐시 이미지를 그대로 보여주는 것 같다. 그래서 다음과 같이 캐시 방지를 위한 값을 파라미터로 추가했다.
$.ajax('/captcha/refresh').done(function () {
imgElement.attr('src', '/captcha/image?cache=' + (new Date()).getMilliseconds());
});
크로스브라우저 처리는 정말 어렵다. 나는 한창 IE8을 많이 쓰던 시절에 웹개발을 시작했다. IE가 없어지면 세상이 더 좋아질 줄 알았다. 어느날, 정말로 IE가 세상에서 사라졌다. 하지만 이제 다른 방식으로 힘들다. 물론 IE를 대응할 때처럼 '부당하다'는 감정이 들지는 않지만, 힘들긴 힘들다. 그래도 이렇게 문제가 계속 생기니 내가 먹고살 수 있는 것이겠지... ☺️
반응형
'프로그래밍 > 이것저것 일하면서' 카테고리의 다른 글
오라클 PLS-00183 Too many bind variables 해결방법 (0) | 2024.03.12 |
---|---|
IntelliJ에서 빈 줄이 들어가면 쿼리 인식이 안되는 경우(Feat. 오라클 dialect) (0) | 2023.08.29 |
IntelliJ IDEA에서 gradle 2.2(혹은 2.x) 버전이 안될때 버전 주의사항 (The project uses Gradle 2.12 which is incompatible with IDEA running on Java 10 or newer.) (0) | 2023.04.25 |
프로그램 버그, 고치는 것만큼 중요한 버그 리포트 작성과 공유 (0) | 2023.03.30 |
@Param 어노테이션, MyBatis와 Spring Data 헷갈리지 말자 (0) | 2023.03.27 |