【问题标题】:Check if user-supplied URL will redirect to https or http检查用户提供的 URL 是否会重定向到 https 或 http
【发布时间】:2013-09-19 08:09:11
【问题描述】:

我有一个文本框,用户可以在其中输入网址。

例如,用户输入 www.google.com 或 http://www.google.com。但是google将所有http请求重定向到https。

如何检查提供 url 的服务器是否会从用户输入的字符串中强制执行 http 或 https?

即如果用户输入http://www.google.com,我需要返回https。

【问题讨论】:

  • 尝试使用indexOf 或正则表达式。
  • 简短回答 - 你不能。您只能看到他们输入的内容,而无法知道远程服务器将如何解析。
  • 您是否只想检查用户输入是否以http:https 开头,或者您是否真的需要知道URL 指向的Web 服务器是否将HTTP 请求重定向到HTTPS 请求?跨度>
  • Google on http 是完全有效的。碰巧他们也有 https 可用。
  • @petko_stankoski 我真的不认为你可以。不过我很想被证明是错的!

标签: javascript jquery url


【解决方案1】:

你不能从 Javascript 中做到这一点。

获取此信息的唯一方法是实际请求 URL 并检查服务器响应的 HTTP 响应标头。当状态码是 301(永久移动)或 307(临时移动)并且响应的 Location:-header 中的 URL 使用不同的协议时,它似乎是从 http 到 https 的重定向,反之亦然。但不幸的是,没有 API 可以执行此操作并使用客户端 Javascript 获取此信息。

作为一种解决方法,您可以将 URL 发送到您的服务器并使用服务器端编程来请求网站并检查状态码。但请注意,目标服务器给您的服务器的响应不一定与它给客户端的响应相同,因为重写规则可能很复杂。

【讨论】:

    【解决方案2】:

    使用 JavaScript match 函数。

    $("#inputField").val().match(/^http/);
    

    或者在 if 语句中

    if (null !== $("#inputField").val().match(/^http/)) {
        // do something
    }
    

    如果您需要更大的灵活性,只需在输入字段上绑定一些事件。然后您可以即时检查。

    【讨论】:

    • 问题是这样的:用户进入www.google.com。现在看到了吗?
    • 顺便说一句,因为我不接受你的回答而否决了这个问题是非常不公平的。
    • 匹配失败。所以你可以返回任何你想要的东西。来吧简单的if-else。我告诉你如何检查。您可以将其与 OR 结合使用...如果您期望更多,请修改您的问题,发布一些代码以便我们看到问题...
    • 亲爱的上帝,您似乎不明白。用户输入 www.google.com。我需要返回 https。我怎样才能做到这一点??就是这个问题。
    • 降低正确答案的评分是否公平?我告诉过你的解决方案接受它,澄清你的问题,或者按照你自己的方式去做!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2020-05-28
    • 2019-01-22
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多