admin 管理员组文章数量: 887021
在html中url的写法,html
html-如何在Javascript中对URL的句点进行编码?
下面的SO帖子很全面,但是所描述的所有三种方法都无法编码一段时间。
帖子:用JavaScript编码URL?
例如,如果我运行这三种方法(即转义,encodeURI,encodeURIComponent),则它们都不对句点进行编码。
因此,“ food.store”显示为“ food.store”,这会破坏URL。 由于Rails应用程序无法识别URL为有效URL,并显示404错误页面,因此它会破坏URL。 也许是Rails路由文件中的配置错误?
用URL的JavaScript编码句点的最佳方法是什么?
8个解决方案
58 votes
我知道这是一个旧线程,但是我在这里看不到任何引起原始问题的URL示例。 几天前,我自己在Java应用程序中遇到了类似的问题。 在我的情况下,带句点的字符串位于URL的路径元素的末尾,例如。
[HTTP://没有server/app/Servlet/test.string]
在这种情况下,我正在使用的Spring库仅将字符串的“测试”部分传递给我的控制器类的相关注释方法参数,大概是因为它将“ .string”视为文件扩展名并剥离了 它走了。 也许这与上面的原始问题是相同的潜在问题?
无论如何,我可以通过在URL末尾添加斜杠来解决此问题。 只是把它扔在那里,以防对其他人有用。
约翰
John Rix answered 2020-07-24T11:58:32Z
30 votes
句点不应该破坏URL,但我不知道您如何使用句点,因此我无法真正说出。 我所知道的功能都没有编码'。' 网址,这意味着您将必须使用自己的函数来编码“。” 。
您可以对数据进行base64编码,但是我不相信在js中有一种本机的方法。 您还可以在客户端和服务器端将所有句点都替换为其等效的ASCII(%2E)。
基本上,通常不需要编码“。”,因此,如果需要这样做,则需要提出自己的解决方案。 您可能还需要做进一步的测试,以确保“。” 实际上会破坏网址。
hth
superultranova answered 2020-07-24T11:57:54Z
9 votes
我的.htaccess使用打破输入值时遇到了同样的问题。由于我不想更改.htaccess的操作,因此使用它来修复它:
var val="foo.bar";
var safevalue=encodeURIComponent(val).replace(/\./g, '%2E');
这将完成所有标准编码,然后替换。 并具有等价的%2E。 PHP自动转换回。 在$ _REQUEST值中,但.htaccess不会将其视为句号,因此一切都很好。
Matthew Cornelisse answered 2020-07-24T11:58:56Z
7 votes
句点不必在URL中进行编码。 这是要查看的RFC。
如果句点在“破坏”某件事,则可能是您的服务器正在对URL进行自己的解释,这当然是一件好事,但这意味着您必须在需要时提出自己的某种编码方案 您自己的元字符需要转义。
Pointy answered 2020-07-24T11:59:21Z
3 votes
我有同样的问题,也许我的解决方案将来可以帮助其他人。
就我而言,该网址是使用JavaScript生成的。 句点用于分隔url中的值(吊索选择器),因此不允许选择器本身包含句点。
我的解决方案是用html实体替换所有句点,如图1所示:
图1:解决方案
var urlPart = 'foo.bar';
var safeUrlPart = encodeURIComponent(urlPart.replace(/\./g, '.'));
console.log(safeUrlPart); // foo%26%2346%3Bbar
console.log(decodeURIComponent(safeUrlPart)); // foo.bar
TJ. answered 2020-07-24T11:59:54Z
1 votes
如果可能的话,使用.htaccess文件将使其非常酷,轻松。 只需在句号前添加一个\。 像:\.
David Lartey answered 2020-07-24T12:00:14Z
0 votes
这是一个Rails问题,请参见Rails REST路由:资源项ID中的点以获取解释(以及Rails路由指南,第3.2节)
user1251840 answered 2020-07-24T12:00:34Z
0 votes
我在其余api网址中遇到了.s问题。 实际上,它们被解释为以自己的方式有意义的扩展。 转义无济于事,因为在调用之前它们已转义(如前所述)。 添加尾随/也无济于事。 我通过将值作为命名参数传递来解决了这个问题。 例如 api / Id / Text.string到api / Id?arg = Text.string。 您需要修改控制器上的路由,但处理程序本身可以保持不变。
user8296471 answered 2020-07-24T12:00:55Z
本文标签: 在html中url的写法 HTML
版权声明:本文标题:在html中url的写法,html 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1715397301h640992.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论