gpt4 book ai didi

java - 为什么我无法通过浏览器连接到localhost 上的http 服务器?

转载 作者:可可西里 更新时间:2023-11-01 16:34:08 29 4
gpt4 key购买 nike

为了练习,我写了一个非常简单的 Java http 服务器。我使用 cURL 对其进行了测试,一切似乎都运行良好,但是当我尝试从浏览器发送请求时

http://localhost:6666/

服务器没有响应。我什至在服务器套接字接受连接时标记了 System.out.println() ,当我尝试通过浏览器访问服务器时,该连接似乎没有触发。这个你能帮我吗。谢谢:)

编辑:部分代码:

public class Server {

private ServerSocket serverSocket;
private Socket socket;
public Server() {
try {
serverSocket = new ServerSocket(6666);
while (true) {
socket = serverSocket.accept();
System.out.println("Whoop! Connection!");
Request request = new Request(socket);
request.run();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

其中 Request 是一个扩展 Thread 以处理多个请求的类

最佳答案

(我假设您在浏览器中使用完全相同的 URL 并使用 curl ...)

如果浏览器在与服务不同的主机上运行,​​则原因是 localhost IP 地址(例如 127.0.0.1)没有路由到任何其他主机除了发送它们的主机之外的主机。 (这就是“本地”的意思......)简而言之,这是正常行为。 (也许您在不同的主机上运行 curl 和浏览器。)

如果浏览器与服务运行在同一台主机上,这种行为就有点令人费解了。然而,有一些可能的解释:

  • 您的浏览器中可能有一些奇怪的网络代理设置。例如,如果您将浏览器配置为将所有 http 请求(包括 127.0.0.1)发送到另一台机器上的 HTTP 代理,当代理将请求中继到真机时,它会去到错误的地方。

  • localhost 域名可能绑定(bind)了一些陌生的IP地址;例如127.x.x.x IP 地址以外的东西。 (这是一件奇怪的事情,但我听说有人误入歧途。)

  • 127.0.0.1 IP 地址可能已绑定(bind)到环回网络适配器之外的其他地址。 (我不知道这在技术上是否可行......)

  • 如果您使用 iptables 在虚拟网络上实现路由,您可能会将 127.0.0.1 数据包发送到错误的位置。 (我不知道这在技术上是否可行......)

第一颗子弹在我看来最有可能。

关于java - 为什么我无法通过浏览器连接到localhost 上的http 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174803/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com