gpt4 book ai didi

Java 套接字 HTML 响应

转载 作者:太空狗 更新时间:2023-10-29 16:47:24 27 4
gpt4 key购买 nike

我正在尝试让 Java 套接字向浏览器发送简单的 HTML 响应。

这是我的 Java 代码:

    Socket socket = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s;
// this is a test code which just reads in everything the requester sends
while ((s = in.readLine()) != null)
{
System.out.println(s);
if (s.isEmpty())
{
break;
}
}
// send the response to close the tab/window
String response = "<script type=\"text/javascript\">window.close();</script>";

PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html");
out.println("Content-Length: " + response.length());
out.println();
out.println(response);
out.flush();
out.close();
socket.close();

server 是一个 ServerSocket,设置为自动选择要使用的开放端口。

这个想法是任何重定向到 http:\\localhost:port 的网页(其中 portserver 正在监听的端口)是自动关闭。

运行此代码时,我的浏览器会收到响应,并且我已验证它收到了我发送的所有信息。

但是,窗口/选项卡没有关闭,我什至无法通过手动向浏览器的 Javascript 控制台发出 window.close(); 命令来关闭选项卡。

我在这里错过了什么?我知 Prop 有给定内容的 html 页面应该自动关闭窗口/选项卡,那么为什么这不起作用?我正在 Google Chrome 上对此进行测试。

我尝试了一个更完整的 html 网页,但还是不行。

这是浏览器报告为页面源的内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">window.close();</script>
</head>
<body>
</body>
</html>

最佳答案

总结评论:

根本问题实际上是发现的问题 here ,其中 window.close() 不会关闭当前窗口/选项卡。

我查找了 MDN Documentation并发现了这个:

When this method is called, the referenced window is closed.

This method is only allowed to be called for windows that were opened by a script using the window.open method. If the window was not opened by a script, the following error appears in the JavaScript Console: Scripts may not close windows that were not opened by script.

显然,Google Chrome 浏览器并未考虑通过脚本打开当前窗口。我也在 Firefox 中尝试过,它表现出相同的行为。

要解决这个问题,我必须首先使用脚本打开当前窗口。

<script type="text/javascript">
window.open('', '_self', '');
window.close();
</script>

关于Java 套接字 HTML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505130/

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