#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». Без этого сервер отвечал пустыми ответами! Спасибо.