android - 浏览器是否应该在启动应用程序之前对自定义 URI 进行编码?

标签 android html google-chrome uri url-encoding

我有一个在自定义 URI 上启动的应用程序,该 URI 类似于 myapp://whatever/something

有一个 HTML 页面,其中有一个 href 链接,如下所示 -> myapp://whatever/?x=abc;y=pqr; 当在 Chrome 中单击此按钮时,myapp 会获取 URL myapp://whatever/?x=abc%3By%3Dpqr%3B,该 URL 会被编码 但是,当我在默认 Internet 浏览器上单击同一链接时,不会进行任何编码。它获取原始 URL -> myapp://whatever/?x=abc;y=pqr;

什么是正确的行为?

我在 Android 4.4.3 上使用 Chrome 38.0.2125.114 进行了尝试。另外,我认为早期版本的 Chrome 没有这样做,但不太确定。

最佳答案

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

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

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

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

?x=abc&y=pqr

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

关于android - 浏览器是否应该在启动应用程序之前对自定义 URI 进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26707046/

相关文章:

javascript - Promise 的第二个 .then() 没有失败

html - Chrome 忽略音频预加载 ="metadata"

google-chrome - Selenium 崩溃: Chrome automation extension has crashed

android - 为什么 GridView 中的适配器不更新其内容?

java - 安全异常 : Permission Denial

android - 尝试上传到 Dropbox : NetworkOnMainThreadException?

javascript - 在Firefox中关闭/隐藏Android软键盘

html - 轮播中卡片的显示问题(Bootstrap)

javascript - 刷新iframe而不影响没有iframe id的父页面

javascript - 在javascript中将字符串变量的内容作为代码行执行?