浏览器在启动应用程序之前是否应编码自定义URI?

时间:2014-11-03 02:44:01

标签: android html google-chrome uri url-encoding

我有一个应用程序,它在自定义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的早期版本没有做到这一点,但不太确定。

1 个答案:

答案 0 :(得分:2)

URL中的分号处理并不完全一致,因此您最好的方法是正确且明确地转义URL。

如果您打算将x的单个查询参数设置为值abc;y=pqr;,则转义后的表单是正确的:

?x=abc%3By%3Dpqr%3B

但是,如果您想要单独的参数,那么&将是互操作性的更好选择。如果您要将x指定为abc而将y指定为pqr,则应将其指定为:

?x=abc&y=pqr

正如您所见,浏览器行为无法通过未转义的分号预测,因此请避免使用它们。