Ali*_*Ali 2 javascript browser unicode url
大多数浏览器(例如Firefox和Chrome)在请求URL之前对URL进行Unicode规范化.例如,当chrome或firefox想要打开此链接时:
http://fa.wikipedia.org/wiki/???_????_?????
它包含波斯语Unicode字符,它们会自动将此字符串转换为:
http://fa.wikipedia.org/wiki/%D8%B3%DB%8C%D8%AF_%D9%85%D8%AD%D9%85%D8%AF_%D8%AE%D8%A7%D8%AA%D9%85%DB%8C
我想修改我网站中的超链接,以防止浏览器规范化unicode字符,这样当用户点击linke时,就会从服务器请求其纯(原始)URL.
这有什么诀窍吗?例如,源页面中的小javascript代码链接到此类URL.
更新:当我通过编程语言(例如Java)请求url时HttpURLConnection,它会请求原始URL并且不使用任何规范化(除了我明确调用UrlNormalizer.normalize(url)).但是,大多数浏览器和Linux的GET命令都会进行规范化.
例如,当chrome或firefox想要打开此链接时:http://fa.wikipedia.org/wiki/سید_محمد_خاتمی
这不是一个有效的URI.这是一个IRI.支持IRI的Web浏览器和其他客户端工具将在后台为您将其转换为仅ASCII的URI格式(百分比-UTF-8编码路径和Punycode编码的主机名).
当我通过编程语言(例如Java的HttpURLConnection)请求url时,它会请求原始URL
HttpURLConnection不支持IRI.它试图按原样发送URI,但它应该真的因为无效而拒绝它.
我想修改我网站中的超链接,以防止浏览器规范化unicode字符,这样当用户点击linke时,就会从服务器请求其纯(原始)URL.
根据HTTP标准,在请求行(RFC7230绝对路径 - > RFC3986段)中发送原始非ASCII字节无效.当提供此类无效请求时,Web服务器会执行不同的,不可预测的事情.它始终是最好的避免.
没有办法告诉IRI感知的浏览器忽略正确的行为并发送非ASCII请求行,但你为什么要这样做?你想在这做什么?
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |