我想知道,如果网站内容在SSL握手或TCP握手期间发生更改,会发生什么情况?
例如:
TCP或SSL握手恰好在客户端和服务器之间的16:02:00开始,并且由于某种原因握手需要花费很长时间,例如5秒钟。
因此握手在16:02:05处完成,但有一定的延迟,但是成功了,客户端开始获取内容。
但是如果网站内容在ssl握手时发生了变化,例如在16:02:03发生了变化,那会发生什么?
假设在16:02:00,网站内容为:“ ABCD”(当ssl或tcp握手启动时)
并在16:02:03更改为:“ ABCD1234”(同时继续握手)
这样客户就可以得到其中一个。 “ ABCD”还是“ ABCD1234”?
这是我的客户端Java代码,用于获取服务器响应:
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
URL obj = new URL(url); // url is https
HttpURLConnection con = (HttpURLConnection) obj.openConnection(proxy);
con.setConnectTimeout(10000);
con.setReadTimeout(15000);
int responseCode = con.getResponseCode();
InputStream is = con.getInputStream();
最佳答案
服务器发送在打开响应文件时(或从何处获取响应)的当前响应。只有在服务器收到HTTP请求后,才能知道完整的URL。仅在已建立的SSL隧道内的SSL握手之后才执行此请求。因此,它将不提供握手之前的版本。
关于java - SSL握手和服务器响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33972320/