2014-02-20 51 views
0

如果一個queryString可以包含一個字符'.'如果一個queryString可以包含'。'

For example:

http://localhost:80/api/petstore/address/filter=address.id=100 

在我的記憶就不能請求正確的主機,所以我的老代碼替換'.''^', 和更換服務器中'^''.'。該問題無法通過編碼修復,因爲'.'不會編碼 。

我只是想仔細檢查,如果queryString可以包含字符'.',並有沒有更好的解決方案來解決這個問題。

回答

1

是的。 .是一個安全的URL字符。

網址中含有使用(<scheme>)計劃的名稱後面 一個冒號,然後一個字符串(<scheme-specific-part>),其 解釋依賴於計劃。

方案名稱由一系列字符組成。小寫字母「a」 - 「z」,數字和字符加(「+」),句號(「。」)和連字符(「 - 」)是允許的。

sourcepercent encoding

你的查詢字符串,但看起來不正確的,因爲你甚至沒有一個?

address/?filter=address.id=100將意味着filteraddress.id=100

address/?filter=address&id=100將意味着價值的filteraddressid100

即將推出自己的編碼標準可能不是最好的主意。

如果這是針對路由而不是查詢字符串,那麼請參閱this SO question關於修復路由期間的問題。雖然.是安全的,但它可能會導致ASP.NET路由出現問題。

+0

非常感謝,我部署了一個WEB-API項目,並使用了路由規則,所以沒有?字符。 –

+0

是的,它是不同的路由。那麼單個值應該是'filter = address.id = 100'? – MikeSmithDev

+0

@LewisZou'.'是安全的,但如果您不採取措施解決問題,會導致路線問題。我更新了答案,以鏈接到另一個關於路線期間的SO答案。 – MikeSmithDev

相關問題