💻 IT/📌 WEB

[WEB] GET 방식으로 URL 파라미터 전송시 인코딩 문제 해결방법

GODSU 2025. 3. 22. 15:12
반응형

최근에 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)를 사용하여 발송하면 된다.

서버단에서도 디코딩함수를 사용해서 적용해도 된다.

 

 

 

반응형