如何防止浏览器控件 URL 解码嵌入式 URL Link
How to Prevent Browser Control from URLDecoding an Embedded URL Link
请原谅我的知识匮乏HTML
我正在尝试生成静态 HTML 页面,该页面在第 3 方应用程序的嵌入式 HTML 浏览器组件中呈现。
在 HTML 正文中,我在页面中嵌入了 URL Link。
<a href="https://mydomain.com.au/Web/Default.ashx?encrypt=x%2BNWTAVMqprD%2BZyFtf1tfBVfIfhqKJ3JCjMmiXiSJSUl6n4FzCuW8mwQfpNskdQEvqU7QiWMdR%2Bbu9y6%2BiO8eh41XwGJX9l5iCYZunTamhGdkkiR9CqVCrkStu%2BzAlhqcJYG6M0zztcActpm6iSn99gXDlw8z%2BHs8Q88N9fZyXdYpxspgl%2BAoGZe7hR3zOulJb1YhabyBbf%2BkfI0dq1YQpHn3SWig8HuWvBANXPrPHDqAOsnT1DtJQ%3D%3D" class="Action">Access Application</a>
注意上面的URL是"URLEncoded"。具体是对"encrypt="后的查询字符串进行加密,然后URL编码。
问题
嵌入在第 3 方应用程序中的 HTML 浏览器组件呈现 HTML 并且一切看起来都很好,除了它解码 URL 字符串。
这会产生具有以下 URI 的超链接;
https://mydomain.com.au/Web/Default.ashx?encrypt=x+NWTAVMqprD+ZyFtf1tfBVfIfhqKJ3JCjMmiXiSJSUl6n4FzCuW8mwQfpNskdQEvqU7QiWMdR+bu9y6+iO8eh41XwGJX9l5iCYZunTamhGdkkiR9CqVCrkStu+zAlhqcJYG6M0zztcActpm6iSn99gXDlw8z+Hs8Q88N9fZyXdYpxspgl+AoGZe7hR3zOulJb1YhabyBbf+kfI0dq1YQpHn3SWig8HuWvBANXPrPHDqAOsnT1DtJQ==
请注意现在存在“+”和“=”等字符,这会导致无法加载作为 URL 目标的应用程序。
有什么方法可以防止浏览器(浏览器控件?)解码此 URL 字符串并保持其完整性吗?
我正在考虑,我不太明白这个建议的目的,但会在 Link 上定义一个 "type" 属性,例如
<a type="application/x-www-form-urlencoded" href="xxx.com/ddddd" class="Action">Access Application</a>
有什么作用吗?
还有什么方法可以防止浏览器控件对此进行解码 URL?
中的元标记???
提前致谢!
亲切的问候
亚伦
我们不得不转义 % 符号。
例如:将 link 中的 %2B 更改为 %252B(%25 是 % 符号的转义码)。同样,将 %3D 更改为 %253D 具有相同的效果并阻止客户端应用程序将 %3D 呈现为 = 符号。
我们无法完全停止 'decoding' 和 URL 的客户端应用程序,但至少现在它已解码为正确的 URL 值
请原谅我的知识匮乏HTML
我正在尝试生成静态 HTML 页面,该页面在第 3 方应用程序的嵌入式 HTML 浏览器组件中呈现。
在 HTML 正文中,我在页面中嵌入了 URL Link。
<a href="https://mydomain.com.au/Web/Default.ashx?encrypt=x%2BNWTAVMqprD%2BZyFtf1tfBVfIfhqKJ3JCjMmiXiSJSUl6n4FzCuW8mwQfpNskdQEvqU7QiWMdR%2Bbu9y6%2BiO8eh41XwGJX9l5iCYZunTamhGdkkiR9CqVCrkStu%2BzAlhqcJYG6M0zztcActpm6iSn99gXDlw8z%2BHs8Q88N9fZyXdYpxspgl%2BAoGZe7hR3zOulJb1YhabyBbf%2BkfI0dq1YQpHn3SWig8HuWvBANXPrPHDqAOsnT1DtJQ%3D%3D" class="Action">Access Application</a>
注意上面的URL是"URLEncoded"。具体是对"encrypt="后的查询字符串进行加密,然后URL编码。
问题
嵌入在第 3 方应用程序中的 HTML 浏览器组件呈现 HTML 并且一切看起来都很好,除了它解码 URL 字符串。
这会产生具有以下 URI 的超链接;
https://mydomain.com.au/Web/Default.ashx?encrypt=x+NWTAVMqprD+ZyFtf1tfBVfIfhqKJ3JCjMmiXiSJSUl6n4FzCuW8mwQfpNskdQEvqU7QiWMdR+bu9y6+iO8eh41XwGJX9l5iCYZunTamhGdkkiR9CqVCrkStu+zAlhqcJYG6M0zztcActpm6iSn99gXDlw8z+Hs8Q88N9fZyXdYpxspgl+AoGZe7hR3zOulJb1YhabyBbf+kfI0dq1YQpHn3SWig8HuWvBANXPrPHDqAOsnT1DtJQ==
请注意现在存在“+”和“=”等字符,这会导致无法加载作为 URL 目标的应用程序。
有什么方法可以防止浏览器(浏览器控件?)解码此 URL 字符串并保持其完整性吗?
我正在考虑,我不太明白这个建议的目的,但会在 Link 上定义一个 "type" 属性,例如
<a type="application/x-www-form-urlencoded" href="xxx.com/ddddd" class="Action">Access Application</a>
有什么作用吗?
还有什么方法可以防止浏览器控件对此进行解码 URL?
中的元标记???提前致谢!
亲切的问候
亚伦
我们不得不转义 % 符号。
例如:将 link 中的 %2B 更改为 %252B(%25 是 % 符号的转义码)。同样,将 %3D 更改为 %253D 具有相同的效果并阻止客户端应用程序将 %3D 呈现为 = 符号。
我们无法完全停止 'decoding' 和 URL 的客户端应用程序,但至少现在它已解码为正确的 URL 值