我有一个应用程序,它在自定义URI上启动,看起来像myapp://whatever/something
有一个HTML页面,其中包含一个href链接 - > myapp://whatever/?x=abc;y=pqr;
在chrome中单击此按钮时,myapp将获取URL myapp://whatever/?x=abc%3By%3Dpqr%3B
,URL将被编码
但是,当我在默认的Internet浏览器上单击相同的链接时 - 没有进行编码。它获取原始网址 - > myapp://whatever/?x=abc;y=pqr;
正确的行为是什么?
我在Android 4.4.3上使用Chrome 38.0.2125.114尝试了此操作。此外,我认为Chrome的早期版本没有做到这一点,但不太确定。
答案 0 :(得分:2)
URL中的分号处理并不完全一致,因此您最好的方法是正确且明确地转义URL。
如果您打算将x
的单个查询参数设置为值abc;y=pqr;
,则转义后的表单是正确的:
?x=abc%3By%3Dpqr%3B
但是,如果您想要单独的参数,那么&
将是互操作性的更好选择。如果您要将x
指定为abc
而将y
指定为pqr
,则应将其指定为:
?x=abc&y=pqr
正如您所见,浏览器行为无法通过未转义的分号预测,因此请避免使用它们。