9
使用Express的URL參數功能時,似乎參數會自動解碼。也就是說,百分比編碼的實體被解析爲它們的正常形式。 %20
被替換爲空格。Express URL參數功能不會解碼加號(+)作爲空格
但是,加號+
未被空格替換。這大概是因爲Express在內部使用decodeURIComponent()
,這也不能代替帶空格的+
。簡單的示例代碼:
app.get('/:sourceFile', function (req, res, next) {
console.log(req.params.sourceFile);
});
如果要求/test%20test
,那麼你得到的控制檯上test test
。如果你要求/test+test
,那麼你在控制檯上得到test+test
。
有沒有辦法在Express 4中更改這種操作模式?這是一個錯誤?
解碼目前是(4.9.5)[在router/layer.js中定義](https://github.com/strongloop/express/blob/4.9.5/lib/router/layer.js# L131-L151),如你猜測的那樣,使用'decodeURIComponent()',我沒有看到任何修改這個行爲的選項('decode_param'被定義,並且只在模塊範圍內作爲本地引用)沒有PR。 – 2014-09-30 03:22:05
@JonathanLonowski感謝您深入研究。我想我可以用'%20'來創建一些中間件來替換'+',但這有點不方便。 – Brad 2014-09-30 03:23:28
你有沒有想出一個解決方案? – loveNoHate 2015-02-06 08:03:08