Возвращает HTTP-статус 204 для GET /generate_204 с помощью uhttpd?
Чтобы справиться с обнаружением портала Android в неволе для моих конкретных настроек, мне нужно возвращать код состояния HTTP 204 всякий раз, когда я получаю запрос GET для /generate_204
, В настоящее время я использую uhttpd в качестве своего веб-сервера, поэтому мне интересно, возможно ли это сделать с этим сервером.
Мое текущее понимание: мне нужно написать себе CGI (или PHP или Lua) скрипт, который возвращает что-то вродеStatus: 204 No Result
У меня вопрос, как я могу настроить Uhttpd для пересылки запросов /generate_204
в CGI, PHP или Lua, поскольку у них нет ни префикса, ни расширения файла, которые я могу подобрать для этой цели.
1 ответ
К сожалению, довольно умная идея @HBruijn просто сделать /generate_204
каталог, а не файл, а затем использовать его в качестве cgi_prefix
с index.cgi
-файл внутри него как index_page
, работает только частично. Когда я открою /generate_204
из браузера сам, он делает именно то, что я хотел, но только после первого возврата перенаправления на /generate_204/
, который обнаружение Android-портала явно игнорирует. Так что, к сожалению, это решение не решает мою проблему.
Вот хакерская работа, которую я придумала, которая действительно работает:
Просто нет /generate_204
файл вообще и вместо этого создайте CGI-скрипт в cgi-bin
это обрабатывает все ошибочные запросы, которые выглядят так:
#!/bin/sh
if [ "$REQUEST_URI" == "/generate_204" ]; then
echo "Status: 204 No Content"
echo ""
exit
fi
echo "Status: 404 Not Found"
echo "Content-Type: text/html"
echo ""
cat /path/to/my/error404.html
Затем просто добавьте следующее /etc/config/uhttpd
:
option error_page /cgi-bin/error.cgi
option cgi_prefix /cgi-bin
list interpreter ".cgi=/bin/ash"
(корректируя имена файлов и папок по мере необходимости)
Это определенно не самое чистое решение, и в случае, если есть способ предотвратить перенаправление и заставить идею @HBruijn работать, я пока оставлю вопрос открытым, так как я бы предпочел это.