使用uhttpd为GET / generate_204返回HTTP状态204?

为了处理我的特定设置的Android强制门户检测,每当我得到/generate_204的GET请求时,我需要返回一个HTTP状态码204。 我目前使用uhttpd作为我的networking服务器,所以我想知道这是否可以做这台服务器。

我目前的理解:我需要自己写一个CGI(或PHP或Lua)脚本,返回类似
Status: 204 No Result

我的问题是我如何configurationuhttpd将请求转发到/generate_204到CGI或PHP或Lua,因为没有前缀和文件扩展名,我可以为此匹配。

不幸的是@HBruijn很聪明的想法是只/generate_204一个目录而不是一个文件,然后把它作为cgi_prefix ,里面的index.cgi文件作为index_page ,只能部分地工作。 当我从浏览器中自己打开/generate_204 ,它确实是我想要的,但只有在首次将redirect返回到/generate_204/ ,Android俘虏门户检测明确忽略。 所以,不幸的是这个解决scheme不能解决我的问题。

这是我提出的黑客工作似乎工作:

根本没有/generate_204文件,而是在cgi-bin中创build一个CGI脚本来处理所有错误的请求,如下所示:

 #!/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" 

(根据需要调整文件和文件夹名称)

这绝对不是最干净的解决scheme,如果有办法阻止redirect,并使@ HBruijn的想法的工作,我现在留下的问题,因为我更喜欢这一点。