HTML 强制 URL 超链接被视为非相对(绝对)

发布于 2025-01-04 05:37:18 字数 522 浏览 1 评论 0原文

我有一个我们的用户为各种客户端的网站输入的 URL 列表...我正在将此列表从服务器加载到网格中以供用户查看...我通过用 href HTML 包装 URL 来使它们可单击标签...问题是,有时用户输入的网址不带 http:// 或 www。前缀,因此浏览器将它们视为相对 URL,但事实并非如此,因为所有这些网站都是为我们的客户提供的,而且它们都是外部的。有没有办法强制这些 URL 被视为绝对而不是相对?

这是一个示例:

<a target='_blank' href='google.com'>google.com</a>

如果您尝试这样做,您会发现浏览器会假设它是相对路径,但事实并非如此。

谢谢


解决方案:

我选择检查“//”(因为我不知道协议是什么 - 可能是 http 或 https),如果找不到,我假设它是一个 http 网站,并在 URL 前面加上前缀那-所以简而言之,没有办法强制浏览器将超链接视为绝对链接

I have a list of URLs that our users have entered for websites of various clients... I am loading this list from the server into a grid for the users to see... I made the URLs clickable by wrapping them with a href HTML tag... the problem is, sometimes the user enters urls without the http:// or www. prefix and so the browser treats them as relative URLs which are never ever the case because all these websites are for our clients and they are all external. Is there a way to force these URLs to be treated as absolute instead of relative?

Here is an example:

<a target='_blank' href='google.com'>google.com</a>

If you try this, you'll see that the browser will assume it is a relative path which shouldn't be the case.

Thanks


Solution:

I've chosen to check for '//' (because I don't know what the protocol is - could be http or https) and if not found, I assume it is an http website and I prefix the URL with that - so in short no way to force the browser to treat the hyperlinks as absolute

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

多像笑话 2025-01-11 05:37:19

您可以在 url 之前添加 // ,它应该可以工作。

例如://stackoverflow.com

You can add // before the url and it should work.

Like: //stackoverflow.com

半山落雨半山空 2025-01-11 05:37:19

为什么不预处理输入并在必要时附加 http://

Why don't you preprocess the input and append http:// when necessary?

可遇━不可求 2025-01-11 05:37:19

一个相对URI。

如果您想链接到http://google.com/,那么这就是您需要链接到的地方。

您可以调整正在包装的 URI,或者尝试通过算法猜测它是否是相对链接。

请注意,您不能安全地假设应该有一个 www.,因为在网站上使用它只是一种约定,而不再是严格遵循的约定。

It is a relative URI.

If you want to link to http://google.com/ then that is where you need to link to.

You can either moderate the URIs you are wrapping, or try to algorithmically guess if it was intended to be a relative link or not.

Note that you cannot safely assume that there should be a www. since the use of that for websites is just a convention, and no longer a strongly followed one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文