최근에 GET 방식으로 URL 파라미터 전송 시 인코딩 문제가 발생하였는데요, 문제원인과 해결방법을 정리해 보겠습니다.
GET 방식으로 URL 파라미터 인코딩 문제
최근에 GET방식으로 암호화된 정보를 넘겨주다가 문제가 발생하였습니다. 특정 정보를 암호화하다 보니 암호화 값에 '+'값이 포함되어 서버 쪽에서는 공백으로 치환돼서 조회가 안 되는 경우가 발생하였습니다.
* 치환되는 문자 리스트 (예약문자)
이 문자는 URL에서 특별한 의미를 가지므로, 데이터를 안전하게 전송하려면 인코딩해야 합니다.
* 안전하게 사용 가능한 문자리스트
아래 문자들은 URL 인코딩 없이 그대로 사용 가능합니다.
- 알파벳: A-Z, a-z
- 숫자: 0-9
- 일부 특수 문자: - _ . ~
최환 되는 문자를 사용해야 한 경우 해결방법
안전하게 사용 가능한 문자리스트만 사용하면 좋겠지만, 개발하다 보면 치환되는 문자를 사용할 수밖에 없는 경우도 발생합니다. 이런 경우에는 어떻게 처리해야 할까요?
방법 1) URL 인코딩 값 사용
URL 인코딩 값을 치환하여 사용하면 서버에서는 원래 문자로 적용되 사용가능합니다.
https://example.com/search?q=hello%2Bworld
>> hello+world
치환된 값을 적용해서 전송하면 q 파라미터는 서버에서는 hello+world로 인식하게 됩니다.
방법 2) encodeURIComponent() 사용 (JavaScript)
const param = encodeURIComponent("hello+world");
console.log(param); // "hello%2Bworld"
JavaScript에서 encodeURIComponent()를 사용하면 자동으로 +가 %2B로 변환됩니다.
정리하면, URL 파라미터 전송 시 치환되는 문자들이 있어서 대상 건들은 인코딩 값으로 변환해서 사용하거나, 클라이언트에서 인코딩함수( encodeURIComponent)를 사용하여 발송하면 된다.
서버단에서도 디코딩함수를 사용해서 적용해도 된다.
'💻 IT > 📌 WEB' 카테고리의 다른 글
[JavaScript] Json 합치는 방법 | Object.assign 함수 사용! (0) | 2024.12.30 |
---|---|
[Web] 쿠키과 세션 개념 정리 :: Cookie, Session (22) | 2022.04.29 |
[HTML] 입력에 필요한 input 태그 정리 (0) | 2022.02.22 |
[Javascript] 브라우저 객체모델 (BOM) 이란? (10) | 2022.02.21 |
[javascript] Date 객체 주요 함수 정리 (0) | 2022.02.21 |