目录
一、问题描述
二、问题解决
三、问题原因
(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协议来访问。