如何识别域是http还是https?

时间:2018-08-31 07:12:24

标签: javascript java

给出一个网址,假设:“ example.com”

我怎么知道Java是http://www.example.com还是https://www.example.com还是javascript中的客户端。

我想对我的域中的任意域执行此操作。我正在创建一个网站扫描工具,我想查找用户输入的网站协议(以防用户输入不带https的example.com)

4 个答案:

答案 0 :(得分:3)

您可以检查location.protocol

WITH cte AS (
    SELECT
        e.id, 
        e.code, 
        (SELECT combovalue FROM dbo.combovalues WHERE id = e.department) department
    FROM dbo.employee e 
)

SELECT *
FROM cte
WHERE department = 'Admin';

答案 1 :(得分:2)

这里有很多误解。

  1. 字符串“ example.com”不是URL。它没有协议

  2. 域就是这样。域。它不是URL。它不是一个网站。 DNS只能解析一系列字符...

  3. 您不能假设有任何与域相关联的网站。

  4. “ www。”惯例是多余的,过时的...(IMO)...丑陋。大多数使用“ www.example.com”的地方还将在“ example.com”上拥有一台服务器,并且一个服务器将适当地重定向到另一个服务器。

  5. 您不能始终假定服务器位于标准端口(80或443)上。甚至有可能https服务器使用端口80或http服务器使用端口443。(疯狂……但有可能)

那么您如何确定给定域名是否具有关联的网站,该网站的URL是什么以及它是“ http:”还是“ https:”?

尝试和错误。没有其他办法。

  1. 尝试在标准端口和可能的通用备用端口上发送HTTP请求;例如端口8080。如果您收到有效的响应,则表明您已识别HTTP服务器。

  2. 使用HTTPS请求尝试相同的操作。

  3. 如果域名不是以“ www”开头。尝试为此添加前缀。

但是请您放弃上述任何一项工作的可能性。

答案 2 :(得分:0)

在javascript中,您可以执行以下操作:

console.log(window.location.protocol) 

,这将记录http或https

答案 3 :(得分:0)

您可以验证document.location.protocol以查看它是“ http:”还是“ https:”,或查阅此页面Parsing a URL on java

import java.net.*;
import java.io.*;
public class ParseURL {
public static void main(String[] args) throws Exception {

    URL aURL = new URL("http://example.com:80/docs/books/tutorial"
                       + "/index.html?name=networking#DOWNLOADING");

    System.out.println("protocol = " + aURL.getProtocol());
}
}