這是在幫s2sync加link box時所遇到的問題。
取得URL title時是直接用get方式呼叫,因此在傳URL之前,得先escape URL。
而escape的動作就於JavaScript的部份執行,又因為得將裡頭的斜線escape掉,所以這裡棄encodeURI()用encodeURIComponent()。
在local端利用WEBrick測試時一切正常,但是deploy到使用nginx+passenger的WebFaction上時卻完全失靈,看了error log之後,發現URL並沒有被escape掉?
進一步測試,確定JavaScript的地方是沒有問題的,所以應該是因為環境設定的不同所造成的。
在問過谷歌大神之後,終於找到問題的所在,原來是nginx會自動將escape過的URL還原回去,內部的機制我不太清楚,還請知道的前輩們補充。
有鑑於上面的原因,我只得用治標不治本的方式來解決這個問題。
方法也很簡單,就是將%也escape成%25就行了。