" http://user:[email protected] "๊ณผ ๊ฐ์ http ๊ธฐ๋ณธ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ด ์๋ GET ์์ฒญ์ "self._qs.unescape๊ฐ ํจ์๊ฐ ์๋๋๋ค" ์ค๋ฅ์ ํจ๊ป ์คํจํฉ๋๋ค.
์ด ์ค๋ฅ๋ request.js์์ ๋ฐ์ํฉ๋๋ค.
if (self.uri.auth && !self.hasHeader('authorization')) {
var uriAuthPieces = self.uri.auth.split(':').map(function(item) {return self._qs.unescape(item)})
self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)
}
Querystring.prototype.unescape
์ ๋ณ๊ฒฝํ์ฌ ์ ์ญ unescape()
๋๋ decodeURIComponent
๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
ํ๊ฒฝ: ์ ์ 0.27.2(ํฌ๋กฌ 43)
๊ทธ๊ฒ์ https://github.com/request/request/pull/1600 ๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ง๋ง ๊ทธ๊ฒ ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ ๋ง์ ์ปจํ ์คํธ๊ฐ ํ์ํฉ๋๋ค. ํด๋น ๋ฒ๊ทธ๋ฅผ ์ฌํํ๋ ์งง์ ์ฝ๋ ์์ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
Browserify์์ ์ ๊ณตํ๋ "querystring" ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ querystring.unescape
๊ฐ ํฌํจ๋์ด ์์ง ์์ผ๋ฏ๋ก ์ด ํ ๋น ์ด ์์๋๋ก ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐธ์กฐ:
https://github.com/substack/node-browserify/issues/826
https://github.com/mike-spainhower/querystring/issues/4
https://github.com/Gozala/querystring/issues/6
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ๊ทธ๋ก ์ธํ ๊ฒ ๊ฐ์ง ์์ผ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ต๋๋ค.
@andornaut ์ ์์์ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๊น? ๋๋ ์ฌ์ ํ์ด ์ค๋ฅ๊ฐ ๋ฐ์
๋๋ unescape๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค๋ ์ ์ ์ฃผ๋ชฉํฉ๋๋ค. ( ์ฐธ์กฐ )
๊ฒฐ๊ณผ์ ์ผ๋ก self._qs.unescape(item)๋ decodeURI(item)๋ก ๋์ฒด๋์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ unescape๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค๋ ์ ์ ์ฃผ๋ชฉํฉ๋๋ค. ( ์ฐธ์กฐ )
๊ฒฐ๊ณผ์ ์ผ๋ก self._qs.unescape(item)๋ decodeURI(item)๋ก ๋์ฒด๋์ด์ผ ํฉ๋๋ค.