Centos Curl Http Ошибка: 404 страница не существует - PullRequest
0 голосов
/ 08 октября 2019

У меня есть веб-страница на http://example.com/route/function, которая размещена на CentOS

. Это правильно открывается из браузера.

Однако, когда я пытаюсь открыть это с помощью команды centos curl:

$curl -L http://example.com/route/function

Я получаю ошибку

<h4> Http Error:404 Page does Not Exists ! </h4>

Но если я просто сверну только доменное имя, я получу ответ правильно.

$curl -L http://example.com/

. htaccess имеет следующее:

RewriteEngine on
Options -Indexes

RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

1 Ответ

0 голосов
/ 08 октября 2019

это отсутствующий заголовок или что-то в этом роде. какой именно заголовок является чьим-либо догадкой. может быть блоком User-Agent для всего, что мы знаем. в любом случае, начните с этого:

curl -v 'http://127.0.0.1/route/function' --location --cookie "" --user-agent 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'Sec-Fetch-Mode: navigate' -H 'Sec-Fetch-User: ?1' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3' -H 'Sec-Fetch-Site: none' -H 'Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,nb;q=0.7' --compressed

он делает очень похожий на браузер запрос (Google Chrome на Windows 7 SP1 x64, если быть точным), веб-сервер не должен быть в состоянии заметить, что он на самом деле разговаривает сзавиток, а не веб-браузер. затем уберите аргументы 1 на 1, пока он не перестанет работать. затем поздравляю, последний аргумент, который вы удалили, был, вероятно, 1, который был необходим.

У меня большой опыт работы с этим материалом, и по моему опыту, это обычно строка Accept (где вы получаете фальшивку, если вы Accept: */* (по умолчанию), но вы получаете то, что хотите, если вы Accept: text/html), либо строка User-Agent (где curl / wget занесен в черный список), либо строка Accept-Encoding (где вы получаете фальшивку, если вы делаете не send Accept-Encoding: gzip, deflate) - но это может бытьлюбой из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...