Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP 1.1请求行_Http_Proxy - Fatal编程技术网

HTTP 1.1请求行

HTTP 1.1请求行,http,proxy,Http,Proxy,我建立了代理服务器,它工作得很好,但有一些网站,他无法处理。 我试图将问题缩小到核心,这就是我想到的: 我的测试用例是: 这是每个维基百科页面中传输的http消息之一。 所以我尝试为它构建一个请求,并通过如下套接字发送: String request1 = "GET http://bits.wikimedia.org/en.wikipedia.org/load.php HTTP/1.1" + "\r\n" + "Host: bits.wikimedia.org" +

我建立了代理服务器,它工作得很好,但有一些网站,他无法处理。 我试图将问题缩小到核心,这就是我想到的: 我的测试用例是: 这是每个维基百科页面中传输的http消息之一。 所以我尝试为它构建一个请求,并通过如下套接字发送:

String request1 = 
    "GET http://bits.wikimedia.org/en.wikipedia.org/load.php HTTP/1.1" + 
    "\r\n" + 
    "Host: bits.wikimedia.org" + "\r\n" +
    "User-Agent: MyHttpProxy/example.java (http://stackoverflow.com/q/5924490/319266)" +
    "\r\n" + "\r\n";
然而,我得到了404返回码-这很奇怪,因为这个页面确实存在! 我做了很多尝试,并提出了一个新的请求,只是在请求行中有所不同:

String request2 = 
     "GET /en.wikipedia.org/load.php HTTP/1.1" + 
     "\r\n" + 
     "Host: bits.wikimedia.org" + 
     "\r\n" +
     "User-Agent: MyHttpProxy/example.java (http://stackoverflow.com/q/5924490/319266)" + 
     "\r\n" + "\r\n";
成功了!整整200人被带回来了 一些不重要的内容/*未请求模块。马克斯让我把这个放在这里*/

谁能告诉我这里有什么问题吗? 我看了rfc,我找不出任何理由


是运行此测试并打印结果的源代码:

仅当您通过代理服务器时,才会在请求行中提供完整的URL。对web服务器的直接请求需要遵循示例中request2中的格式

查看源代码,您将请求发送到端口80,这几乎100%意味着它们没有通过代理。我猜您需要将request1发送到端口8080或您的代理正在侦听的任何端口


至于RFC,请看一看。请注意,绝对路径与代理一起使用,相对路径与源服务器一起使用。

只有通过代理服务器才能在请求行中提供完整的URL。对web服务器的直接请求需要遵循示例中request2中的格式

查看源代码,您将请求发送到端口80,这几乎100%意味着它们没有通过代理。我猜您需要将request1发送到端口8080或您的代理正在侦听的任何端口


至于RFC,请看一看。请注意,绝对路径与代理一起使用,相对路径与源服务器一起使用。

从技术上讲,服务器也应该接受绝对语法,但许多服务器不接受。您好!首先感谢您的回复。如何判断我的请求是否通过服务器?假设我想创建一个透明的代理服务器,我如何判断我的请求是转到代理服务器还是直接转到源服务器?e、 g:还有上面的。顺便说一句:我在stackoverflow中没有15分,因此我仍然无法将答案标记为有用,但它确实有用!你好如果您正在编写一个透明的代理服务器,那么实际上您无法在客户端级别进行区分-这就是透明的全部要点。在这种情况下,我的大部分答覆并不适用。如果您自己编写一个代理,那么您应该在它的日志中看到它是否看到了请求。或者,您可以进行流量捕获,查看对等IP是代理IP还是源服务器IP。从技术上讲,服务器也应该接受绝对语法,但许多服务器不接受。您好!首先感谢您的回复。如何判断我的请求是否通过服务器?假设我想创建一个透明的代理服务器,我如何判断我的请求是转到代理服务器还是直接转到源服务器?e、 g:还有上面的。顺便说一句:我在stackoverflow中没有15分,因此我仍然无法将答案标记为有用,但它确实有用!你好如果您正在编写一个透明的代理服务器,那么实际上您无法在客户端级别进行区分-这就是透明的全部要点。在这种情况下,我的大部分答覆并不适用。如果您自己编写一个代理,那么您应该在它的日志中看到它是否看到了请求。或者,您可以执行流量捕获,并查看对等IP是代理IP还是源服务器IP。