我有一个文本框,用户在其中输入 url。
例如,用户输入 www.google.com 或http://www.google.com。但是谷歌将所有http请求重定向到https。
如何检查提供 url 的服务器是否会从用户输入的字符串中强制执行 http 或 https?
即如果用户输入http://www.google.com,我需要返回 https。
我有一个文本框,用户在其中输入 url。
例如,用户输入 www.google.com 或http://www.google.com。但是谷歌将所有http请求重定向到https。
如何检查提供 url 的服务器是否会从用户输入的字符串中强制执行 http 或 https?
即如果用户输入http://www.google.com,我需要返回 https。
你不能从 Javascript 中做到这一点。
获取此信息的唯一方法是实际请求 URL 并检查服务器响应的 HTTP 响应标头。当状态码是 301(永久移动)或 307(临时移动)并且Location:
响应的 -header 中的 URL 使用不同的协议时,它似乎是从 http 到 https 的重定向,反之亦然。但不幸的是,没有 API 可以执行此操作并使用客户端 Javascript 获取此信息。
作为一种解决方法,您可以将 URL 发送到您的服务器并使用服务器端编程来请求网站并检查状态码。但请注意,目标服务器将给您的服务器的响应不一定与它给客户端的响应相同,因为重写规则可能很复杂。
使用 JavaScriptmatch
函数。
$("#inputField").val().match(/^http/);
或者在 if 语句中
if (null !== $("#inputField").val().match(/^http/)) {
// do something
}
如果您需要更大的灵活性,只需在输入字段上绑定一些事件。然后,您可以即时检查。