0

我向谷歌发送了以下 http 请求,它返回了一个错误的请求页面。我的要求有什么问题吗?我正在用 C++ 实现代理服务器。我将客户的请求重定向到他们想要连接的服务器。在重定向之前,我在请求中插入了“\r\nConnection: close”。我插入的位置错了吗?谢谢。(我使用“@@@”包围请求)

@@@GET http://www.google.com.tw/ HTTP/1.1
Host: www.google.com.tw
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Connection: close
Cookie:***

@@@
4

1 回答 1

0

您所拥有的内容根据规范并不正确,尽管如果某些服务器确实响应它(但不是谷歌的),我不会感到惊讶。

  • Proxy-Connection 用词不当,根本不需要

  • GET 请求应提供相对路径,而不是绝对路径。需要明确的是:客户端确实需要在 GET 标头中发送完整地址,但代理需要将其提取并重写,以便 GET 携带路径,而 Host 标头携带主机名。

要尝试几个简单的实验,只需telnet google.com 80复制粘贴您的请求,然后再粘贴几个 CRLF。

于 2012-03-28T07:16:55.150 回答