ЗАВИХРЕНИЕ набора для использования локальных виртуальных хостов

Используя Apache или Ngnix я всегда создаю участки разработки на основе реальных проектов такой как http://project1.loc который, после добавления к моему .hosts файл, браузер не имеет никакой проблемы с помощью.

Однако, когда я пытаюсь выполнить ВИХРЕВОЙ запрос (http://project1.loc/post.json) к тому же самому URL я никогда ничего не получаю кроме тайм-аута. Я предполагаю, что ЗАВИХРЕНИЕ не заботится о моих пользовательских хостах и переходит прямо к серверу имен, поскольку это - информация.

Как я могу зафиксировать это?

ОБНОВИТЕ я установил пользовательский заголовок "ХОСТ: http://project1.loc" и теперь я получаю 400 ошибок - но они мгновенны, таким образом, я предполагаю, что cURL, по крайней мере, использует файл hosts...

107
задан Xeoncross 4 August 2010 в 20:04
поделиться

5 ответов

Либо используйте настоящее полное доменное имя (например, dev.yourdomain.com ), который указывает на 127.0.0.1 , или попробуйте отредактировать соответствующий файл hosts (обычно / etc / hosts в средах * nix).

2
ответ дан 24 November 2019 в 03:34
поделиться

РЕДАКТИРОВАТЬ: Хотя в настоящее время это принятый ответ, читатели могут найти этот другой ответ пользователя Джона Харта более адаптированным к своим потребностям. Он использует опцию, которая, по словам пользователя Кена , была представлена ​​в версии 7.21.3 (которая была выпущена в декабре 2010 года , то есть после этого первоначального ответа).


В отредактированном вопросе вы используете URL-адрес в качестве имени хоста, тогда как это должно быть только имя хоста.

Попробуйте:

curl -H 'Host: project1.loc' http://127.0.0.1/something

где project1.loc - это только имя хоста, а 127.0.0.1 - целевой IP-адрес.

(Если вы используете curl из библиотеки, а не в командной строке, убедитесь, что вы не поместили http: // в заголовок Host .)

120
ответ дан 24 November 2019 в 03:34
поделиться

Действительно ли сервер получает запросы, и правильно ли вы обрабатываете имя хоста (псевдоним)?

после добавления в файл .hosts

Проверьте журнал вашего веб-сервера, чтобы увидеть, как пришел запрос...

У curl есть опции, позволяющие записывать отправленный запрос и полученный ответ, это называется trace, который будет сохранен в файл.

--trace

Если вам не хватает информации о хосте или заголовков - вы можете принудительно добавить эти заголовки с помощью опции config.

Я бы заставил работать запрос curl в командной строке, а затем попытался бы реализовать его в PHP.

опция config -

-K/--config

опции, которые важны в curl, находятся здесь

--trace Включает полную трассировку всех входящих и исходящих данных, включая описательную информацию, в заданный выходной файл. Используйте "-" в качестве имени файла, чтобы вывод был отправлен в stdout.

      This option overrides previous uses of -v/--verbose or --trace-ascii.

      If this option is used several times, the last one will be used.

-K/--config Укажите, из какого файла конфигурации читать аргументы curl. Конфигурационный файл - это текстовый файл, в котором могут быть записаны аргументы командной строки, которые затем будут использоваться так, как если бы они были записаны в фактической командной строке. Опции и их параметры должны быть указаны в одной строке конфигурационного файла, разделенные пробелами, двоеточием, знаком равенства или любой их комбинацией (однако предпочтительным разделителем является знак равенства). тор - знак равенства). Если параметр должен содержать пробелы, его необходимо заключить в кавычки. Внутри двойных кавычек доступны следующие экранирующие последовательности: \, \", \t, \n, \r и \v. Обратная косая черта, предшествующая любой другой букве, игнорируется. Если в первой колонке строки конфигурации стоит символ '#', остальная часть строки будет рассматриваться как комментарий. Записывайте только одну опцию на физическую строку в конфигурационном файле.

      Specify the filename to -K/--config as '-' to make curl read the file from stdin.

      Note that to be able to specify a URL in the config file, you need to specify it using the --url option, and not by simply writing the URL on its own line. So, it could look similar to this:

      url = "http://curl.haxx.se/docs/"

      Long option names can optionally be given in the config file without the initial double dashes.

      When curl is invoked, it always (unless -q is used) checks for a default config file and uses it if found. The default config file is checked for in the following places in this order:

      1) curl tries to find the "home dir": It first checks for the CURL_HOME and then the HOME environment variables. Failing that, it uses getpwuid() on UNIX-like systems (which  returns  the  home  dir
      given the current user in your system). On Windows, it then checks for the APPDATA variable, or as a last resort the '%USERPROFILE%\Application Data'.

      2)  On windows, if there is no _curlrc file in the home dir, it checks for one in the same dir the curl executable is placed. On UNIX-like systems, it will simply try to load .curlrc from the deter-
      mined home dir.

      # --- Example file ---
      # this is a comment
      url = "curl.haxx.se"
      output = "curlhere.html"
      user-agent = "superagent/1.0"

      # and fetch another URL too
      url = "curl.haxx.se/docs/manpage.html"
      -O
      referer = "http://nowhereatall.com/"
      # --- End of example file ---

      This option can be used multiple times to load multiple config files.
1
ответ дан 24 November 2019 в 03:34
поделиться

Похоже, что это не такая уж редкая проблема.

Сначала проверьте это.

Если это не поможет, вы можете установить локальный DNS-сервер в Windows, например, здесь. Настройте Windows на использование localhost в качестве DNS-сервера. Этот сервер можно настроить так, чтобы он был авторитетным для любых фальшивых доменов, которые вам нужны, а для всех остальных запросов перенаправлял запросы на настоящие DNS-серверы.

Я лично думаю, что это немного перебор, и не могу понять, почему файл hosts не будет работать. Но это должно решить проблему, с которой вы столкнулись. Убедитесь, что вы также настроили ваши обычные DNS-серверы в качестве переадресаторов.

2
ответ дан 24 November 2019 в 03:34
поделиться

Выполнение запроса к

C:\wnmp\curl>curl.exe --trace-ascii -H 'project1.loc' -d "uuid=d99a49d846d5ae570
667a00825373a7b5ae8e8e2" http://project1.loc/Users/getSettings.xml

Привело к тому, что -H файл журнала содержит:

== Info: Could not resolve host: 'project1.loc'; Host not found
== Info: Closing connection #0
== Info: About to connect() to project1.loc port 80 (#0)
== Info:   Trying 127.0.0.1... == Info: connected
== Info: Connected to project1.loc (127.0.0.1) port 80 (#0)
=> Send header, 230 bytes (0xe6)
0000: POST /Users/getSettings.xml HTTP/1.1
0026: User-Agent: curl/7.19.5 (i586-pc-mingw32msvc) libcurl/7.19.5 Ope
0066: nSSL/1.0.0a zlib/1.2.3
007e: Host: project1.loc
0092: Accept: */*
009f: Content-Length: 45
00b3: Content-Type: application/x-www-form-urlencoded
00e4: 
=> Send data, 45 bytes (0x2d)
0000: uuid=d99a49d846d5ae570667a00825373a7b5ae8e8e2
<= Recv header, 24 bytes (0x18)
0000: HTTP/1.1 403 Forbidden
<= Recv header, 22 bytes (0x16)
0000: Server: nginx/0.7.66
<= Recv header, 37 bytes (0x25)
0000: Date: Wed, 11 Aug 2010 15:37:06 GMT
<= Recv header, 25 bytes (0x19)
0000: Content-Type: text/html
<= Recv header, 28 bytes (0x1c)
0000: Transfer-Encoding: chunked
<= Recv header, 24 bytes (0x18)
0000: Connection: keep-alive
<= Recv header, 25 bytes (0x19)
0000: X-Powered-By: PHP/5.3.2
<= Recv header, 56 bytes (0x38)
0000: Set-Cookie: SESSION=m9j6caghb223uubiddolec2005; path=/
<= Recv header, 57 bytes (0x39)
0000: P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
<= Recv header, 2 bytes (0x2)
0000: 
<= Recv data, 118 bytes (0x76)
0000: 6b
0004: <html><head><title>HTTP/1.1 403 Forbidden</title></head><body><h
0044: 1>HTTP/1.1 403 Forbidden</h1></body></html>
0071: 0
0074: 
== Info: Connection #0 to host project1.loc left intact
== Info: Closing connection #0

Мой файл hosts выглядит так:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
...
...
127.0.0.1   project1.loc
1
ответ дан 24 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: