【问题标题】:valid URL to redirect to要重定向到的有效 URL
【发布时间】:2022-01-14 15:04:16
【问题描述】:

我有一个奇怪的情况,我有一个由我的用户编写的 URL 列表(有时省略 https,例如 www.google.com 或 google.com),我想重定向到这些 URL,但我不确定我应该附加“http://”或“https://”,是否有可接受的方式或库将它们转换为正确的重定向链接,以便在 express res.redirect("url") 中使用。

让我更清楚:

这是一个有效的快速代码:

res.redirect("http://www.google.com")

还有一个我有错误的:

res.redirect("google.com")

这会将我重定向到 myhost/google.com。问题是,这些 URL 的编写方式并不重要,如果您将它们复制并粘贴到 chrome 地址栏,它们将起作用。我希望在我的重定向中具有相同的功能。

对不起,如果这个问题太愚蠢了,我是 express 和 node.js 的新手

【问题讨论】:

    标签: node.js express http


    【解决方案1】:

    您应该 NOT 将协议添加到您的链接中,如果链接是默认网站,而不是 FTP 或任何其他资源。事实上,http 对于很多浏览器来说已经过时和弃用,并且在短时间内将不再适用于某些浏览器。如果 SSL 证书过时,这可能会在未来发生变化。

    无论如何,您应该通过添加将来可以修改的函数以可变方法(而不是硬编码方式)添加它,例如:

    function addhttp($url) {
        if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url;
        }
        return $url;
    }
    

    或者,如果您的应用程序中有该层,您可以通过数据库执行此操作。然后将http或https添加到DB层的每个链接。

    【讨论】:

    • 感谢您的快速回答。请帮助我,我该如何处理这种情况? express.js 显然没有重定向到例如 www.google.com
    • @KemalAcikgoz 请查看我的更新
    • @KemalAcikgoz 如果我的回答对您有帮助,请不要忘记投票/标记为正确 :) 或者如果您有任何疑问,请再次询问我,我很乐意更新我的答案 :)跨度>
    • 嗨,这个答案很详细。非常感谢。但是,由于我开始对新用户使用 stackoverflow,因此我无法为您投票。当我通过标记 15(目前为 11 :))我会回来并支持你的答案。 P.S.:我在 npm 中找到了一个名为 parse-url 的库,它完全可以满足我的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    相关资源
    最近更新 更多