gpt4 book ai didi

Java:可以通过 SSLSocket 发送任何字符串,但以 h/H 开头的字符串除外

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:27 26 4
gpt4 key购买 nike

我正在尝试编写一个简单的 SSL 服务器来监听 https 请求并打印一行作为响应。我已经在我的网络浏览器中导入了正确的证书和所有这些,并在启动服务器时使用 -Djavax.net.ssl.keyStore= -Djavax.net.ssl.keyStorePassword= 标志。

我面临的问题是我可以发送任何我能想到的字符串,但以“h”或“H”开头的字符串除外。当我连接我的浏览器时,如果发送的字符串以 h 开头,我会重置/拒绝连接,否则不会。

这可能是什么原因?我认为这可能与 HTTPS 协议(protocol)有关,但我不知道为什么会这样。

public class SecureSocketServer {
private static int port = 8080;
private static SSLServerSocket s;

public static void main(String[] args) {

try {
SSLServerSocketFactory sslSrvFact;
sslSrvFact = (SSLServerSocketFactory)
SSLServerSocketFactory.getDefault();
s =(SSLServerSocket)sslSrvFact.createServerSocket(port);


SSLSocket c = (SSLSocket)s.accept();

DataOutputStream out = new DataOutputStream(c.getOutputStream());
c.startHandshake();

//out.writeBytes("hello"); Does not work
out.writeBytes("Yes, Hello"); Works

out.flush();
c.close();
}


catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

I am thinking that it could have to do with the HTTPS protocol

当然可以。你违反了它。您应该发送正确的 HTTP 响应 header 。

注意您不会得到“连接被拒绝”。您可能会得到许多东西中的任何一个,但您没有得到。连接已完全建立,否则您将无法通过握手取得如此大的成就。

关于Java:可以通过 SSLSocket 发送任何字符串,但以 h/H 开头的字符串除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187355/

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