我正在嘗試編寫一個簡單的SSLserver來偵聽https請求並將單行打印爲響應。我在Web瀏覽器中導入了正確的證書和所有這些證書,並在啓動服務器時使用-Djavax.net.ssl.keyStore = -Djavax.net.ssl.keyStorePassword =標誌。Java:可以通過SSLSocket發送任何字符串,但以h/H開頭的字符串除外
我面臨的問題是我可以發送任何字符串,我可以想到的,除了任何以'h'或'H'開頭的字符串。當我與我的瀏覽器連接時,如果發送的字符串以h開頭,但不以其他方式發送,則會重置/拒絕連接。
這可能是什麼原因?我想這可能與HTTPS協議有關,但我不知道爲什麼會這樣。
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();
}
}
你爲什麼不寫一個正確的HTTPS頭? –
您的服務器不會打印單行作爲響應。沒有行終止符。 – EJP
'最小代碼'仍然必須正確。這不是。 – EJP