首页 文章

HTTP响应查询

提问于
浏览
1

我的查询与我正在做的实现有关 .

当HTTP请求从客户端端口发送到服务器端口时,我知道响应也会被发送回同一端口(端口到端口通信) .

在我的例子中,服务器将响应转发到带有Query String的URL到我们网络上的主机服务器 . 因此,当使用URLConnection对象的InputStream读取响应时,我得到的是与转发URL的Login页面对应的HTML内容,没有查询字符串 .

我怀疑这是因为我们的主机服务器修改了URL .

现在问题是,在这种情况下,似乎有一个中间实体,它是我们转发URL的主机服务器 . 因此,当我在InputStream中读回响应(由服务器转发的URL)时,我不确定以下哪两个是实际情况发生的:

1.)直接从外部服务器读取响应(因为这是端口到端口的通信)

要么

2.)从中间主机服务器收到的响应,看起来是这种情况 .

(如果第二种情况正确,中间主机服务器是否会知道哪个客户端正确地将响应转发给?)

URL url = new URL(httpsURL);
HttpsURLConnection urlConnection = (HttpsURLConnection) url
                .openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true); 
///
Omitting code for SSL
///
String urlParameters = "CCNumber=4111111111111111";
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();

BufferedReader in = new BufferedReader(new InputStreamReader(
                urlConnection.getInputStream()));
String inputLine;
if (urlConnection.getResponseCode() == HttpsURLConnection.HTTP_OK){

 while ((inputLine = in.readLine()) != null) {
  System.out.println(inputLine);
 }
}

1 回答

  • 1

    您从中间服务器收到响应 .

    听起来您的中间服务器充当(reverseproxy server . 当您向中间服务器发出请求时,它会向您网络上的服务器发出请求(就像您所描述的那样) . 但是,"real"服务器通常不知道请求是由您发起的 . 特别是,它不知道您的IP地址或您发送请求的端口 . 它唯一知道的是中间(代理)服务器的IP地址和端口 . 另一方面,代理服务器仍然知道您发送请求的IP地址和端口 .

    因此,您将请求发送到代理,代理将其发送到“真实”服务器,真实服务器将其响应发送回代理,代理将其发送回给您 . 您和“真实”服务器之间不直接通信 .

相关问题