1. javascript decodeURIComponent
문제점
js url 사용 중 img url을 제대로 읽지 못하는 이슈 발생
시도해 본 것들
exhibitionImg.setAttribute("onerror", "this.src='/static/img/default-img.jpg'")
if (exhibition.image) {
if (exhibition.image.includes('https:')) {
exhibitionImg.setAttribute("src", exhibition.image);
} else if (exhibition.image.includes('https%3A')) {
// 대체 url 코드로 인코딩된 url 디코딩 하기
exhibitionImg.setAttribute("src", decodeURIComponent(exhibition.image.split("media/")[1]));
} else if (exhibition.image.includes('media')) {
exhibitionImg.setAttribute("src", `${backendBaseURL.split('/api')[0]}${exhibition.image}`)
}
} else {
exhibitionImg.setAttribute("src", "/static/img/default-img.jpg")
}
해결 방법
exhibitionImg.setAttribute("onerror", "src='/static/img/default-img.jpg'")
if (exhibition.image) {
if (exhibition.image.includes('https%3A')) {
// 대체 url 코드로 인코딩된 url 디코딩 하기
exhibitionImg.setAttribute("src", `https://${decodeURIComponent(exhibition.image.split("https%3A")[1])}`)
}
else if (exhibition.image.includes('https:')) {
exhibitionImg.setAttribute("src", exhibition.image)
} else {
exhibitionImg.setAttribute("src", `${backendBaseURL.split('/api')[0]}${exhibition.image}`)
}
어설프지만 https:를 직접 적어주고 :의 대체url인 %3A을 기준으로 split하기
알게 된 점
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
escape는 과거에 사용되다가 사장된 함수이다.
encodeURI는 아스키 코드중 :, ;, /, =, ?, &을 제외하고 인코딩하는 경우 사용
decodeURIComponent는 :, ;, /, =, ?, &과 아스키 코드가 아닌 한글 등도 모두 인코딩 가능하다
'개발일지 > TIL' 카테고리의 다른 글
TIL 23-07-04 OAuth (0) | 2023.07.04 |
---|---|
TIL 23-06-29 python __name__사용 하기 (0) | 2023.06.29 |
TIL 23-06-22 백준 - 평균은 넘겠지 python 오사오입 (0) | 2023.06.22 |
TIL 23-06-21 JS for문, if문 사용하기 (0) | 2023.06.21 |
TIL 23-06-19 알고리즘 반례 찾기 (0) | 2023.06.19 |