C сокеты, GET-запросы прокси возвращаются как 404 - PullRequest
0 голосов
/ 30 марта 2019

Я создаю простой прокси-сервер и столкнулся с проблемой получения ответов с веб-сайта.

Я настроил свой сервер на прием подключений через указанный порт, к которому подключается через прокси-серверную конфигурацию браузера. Сервер может получить запрос, подключиться к указанному веб-сайту, отправить запрос и получить ответ.

Я пересылаю запрос из браузера на сайт без изменений, но ответы, которые я получаю, всегда содержат 404 ошибки.

Это запрос, который я направляю на веб-сайт, после каждой строки есть \ r \ n, а после последней - \ r \ n \ r \ n.

GET http://www.mywebpage.com/ HTTP/1.1
Host: www.mywebpage.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: __utma=1.35811746.1525489860.1537250282.1539467023.3; __utmz=1.1537250282.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _fbp=fb.1.1553849756364.1600689742
Upgrade-Insecure-Requests: 1

Мой код отправки и получения выглядит следующим образом.

sendError  = send(serverSock, requestString , strlen(requestString) , 0 );  
returnedSize = recv(serverSock, buffer, sizeof(buffer), 0);

1 Ответ

0 голосов
/ 30 марта 2019

Я пересылаю запрос из браузера на сайт без изменений ...

GET http://www.mywebpage.com/ HTTP/1.1

Абсолютный URL 1007 *, который вы используете в цели запроса , должен использоваться только для прокси. Обычные серверы ожидают исходную форму , то есть только путь и необязательный запрос, но не полный URL. Таким образом, метод, хост и порт должны быть удалены:

 GET / HTTP/1.1
...