image url canvas 조작하기, CORS policy origin exception 회피하기
www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
위 이미지는 구글 웹페이지 메인에 로고이다.
위 이미지의 url이 노출된 상태에서 js에서 해당 이미지url로 image 생성자에 담아
localhost로 해당 이미지를 조작 및 변경 처리를 시도 하면 아래와 같이
CORS policy: No 'Access-Control-Allow-Origin 오류가 발생한다.
CORS를 통하지 않고, 다른 origin으로 부터 가져온 이미지를
canvas를 통해 이미지를 자르고 조작 시
원본데이터가 오염 및 안전하지 않다고 판단하여
js에서 origin exception이 발생한 것이다.
developer.mozilla.org/ko/docs/Web/HTML/CORS_enabled_image
이러한 문제를 회피하기 위해 image url이 완전히 노출된 데이터를 인코딩 해서 처리해야한다.
- js에서 base64 encoding으로 변환 후 처리를 시도할 수 있지만 잘 처리가 되지 않을 수 있다.
- 이럴경우 java에서 base64 encoding으로 변환 후 처리하면 쉽게 해결 할 수 있다.
인코딩 된 base64 data 값을 화면에서 가져와 img 태그안에 src attribute로 넣어주면 된다.
img 태그는 해당 이미지값을 읽어 다음과 같이 출력해준다.
인코딩된 값으로 canvas 등을 활용해 CORS policy: No 'Access-Control-Allow-Origin을 회피하여
DOM을 조작할 수 있게 되었다.