cURL получает пустой основной ответ от сервера Nginx

#http #curl #nginx

#http #curl #nginx

Вопрос:

Я пытаюсь извлечь HTTP-содержимое с помощью cURL, но в ответе получаю только пустое тело:

 [root@www ~]# curl -v http://www.existingdomain.com/
* About to connect() to www.existingdomain.com port 80 (#0)
*   Trying 95.211.256.257... connected
* Connected to www.existingdomain.com (95.211.256.257) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-redhat-linux-gnu) libcurl/7.21.0 NSS/3.12.8.0 zlib/1.2.5 libidn/1.18 libssh2/1.2.4
> Host: www.existingdomain.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/0.8.53
< Date: Sat, 28 May 2011 15:56:23 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< X-Powered-By: PHP/5.3.3-0.dotdeb.1
<
* Connection #0 to host www.existingdomain.com left intact
* Closing connection #0
  

Если я изменю URL на другой домен, например www.google.com я получаю содержимое.

Как это может быть возможно? И как извлекать содержимое?

Ответ №1:

Сервер может отправлять клиенту все, что ему нравится, включая ничего. Хотя это не совсем приятно, клиент мало что может с этим поделать. Вы могли бы

  • проверьте журналы сервера, чтобы увидеть, есть ли какая-то проблема, которая делает его таким спокойным (учитывая, что сервер находится под вашим контролем) или
  • попробуйте другой клиент, чтобы узнать, не хочет ли сервер общаться с curl. Затем вы можете настроить curl для имитации обычного веб-браузера, если это поможет

Комментарии:

1. Сервер не находится под моим контролем. Я попытался установить больше заголовков и нашел тот, который заставляет сервер отвечать на содержимое! Это был ответ «Accept-Language». Без этого сервер отвечал пустыми ответами! Спасибо.