目录

一、问题描述

二、问题解决

三、问题原因

(1)问题成因

(2)那为什么访问其他网站的时候,其不会出错呢?而且自己会用https协议?


一、问题描述

       在浏览器直接输入:“xxx.xxx.xxx.xxx:8443”后,报错

400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx/1.23.1

二、问题解决

     在浏览器直接输入:“https://xxx.xxx.xxx.xxx:8443”, 成功访问

三、问题原因

(1)问题成因

        这个错误信息表明在尝试访问一个使用HTTPS(安全HTTP)的网站时,发送了一个普通的HTTP请求。HTTP和HTTPS是两种不同的协议,HTTP不提供数据加密,而HTTPS则通过SSL/TLS证书对传输的数据进行加密,以保护数据的安全。

        当直接输入IP地址和端口号(例如"xxx.xxx.xxx.xxx:8443")时,浏览器默认使用的是HTTP协议。因此,当尝试访问需要HTTPS的网站时,服务器会返回一个"400 Bad Request"错误,因为服务器无法处理HTTP请求

        要解决这个问题,需要在URL中明确指定使用HTTPS协议。这样,浏览器就会发送一个HTTPS请求,服务器就能够正确地处理该请求并返回相应的页面。所以,正确的URL应该是"https://xxx.xxx.xxx.xxx:8443"。

(2)那为什么访问其他网站的时候,其不会出错呢?而且自己会用https协议?

        访问某些网站时,即使您只输入域名而不是完整的HTTPS URL(例如入"www.example.com"

而非"https://www.example.com"),浏览器通常仍能自动将HTTP请求升级为HTTPS请求,这是因为许多现代网站都启用了HSTS(HTTP Strict Transport Security,严格传输安全策略)。

        HSTS是一种安全策略机制,允许服务器告知浏览器,在一定时间内应该始终通过HTTPS与该服务器通信,即使用户在地址栏输入的是HTTP链接。这样一来,浏览器收到服务器的HSTS策略后,下次及之后对该域的所有请求都会自动转换为HTTPS请求

        另外,一些网站还会通过重定向的方式,将HTTP请求自动重定向至HTTPS版本,以确保用户总是通过安全连接访问网站。这种情况下,即使您输入的是HTTP地址,服务器也会马上将您的访问引导至对应的HTTPS地址,从而避免了报错。

        因此,对于那些配置了HSTS或者设置了自动重定向的网站,即使您没有明确输入HTTPS,也能正常访问到HTTPS版的网站内容。而对于特定IP地址和端口,尤其是非标准端口(比如8443在这个例子中),如果没有类似的配置,浏览器就无法知道它应当使用HTTPS,也就无法自动转换协议,这时就需要手动指定HTTPS协议来访问

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐