Nodogsplash移动端重定向URL失效问题咨询
我之前也碰到过类似的情况,OpenWRT老版本搭配Nodogsplash beta版的时候,移动端的 captive portal 跳转总是出问题,桌面端却正常。结合你的代码和场景,给你几个针对性的排查和解决方向:
1. 明确传递redirect参数到$authtarget
桌面浏览器可能会自动保留跳转前的URL,但移动端的 captive portal 检测机制更严格,必须在认证请求中明确带上redirect参数。你现有的代码里提到了用$authtarget,但要确保它携带了redirect=$redirecturl参数,比如把链接改成:
<a href="$authtarget?redirect=$redirecturl">继续</a>
或者用表单提交的方式(更兼容移动端):
<form method="get" action="$authtarget"> <input type="hidden" name="redirect" value="$redirecturl"> <button type="submit">继续</button> </form>
很多移动端浏览器会拦截纯a标签的跳转,表单GET提交的方式更不容易被系统阻断。
2. 检查Nodogsplash配置项
OpenWRT 15.05.01是比较旧的版本,搭配的Nodogsplash beta版可能在redirect配置上有坑:
- 登录到OpenWRT后台,找到Nodogsplash的配置文件(一般在
/etc/nodogsplash/nodogsplash.conf),确认RedirectURL是否设置成了你要跳转的预设页面,或者是否开启了允许客户端自定义redirect的选项(比如AllowCustomRedirect)。 - 尝试开启
ForceRedirect选项,强制所有认证后的流量跳转到指定URL,这在移动端可能更有效。
3. 适配移动端captive portal检测
iOS和Android的系统会自动发送captive portal检测请求(比如iOS的http://captive.apple.com/hotspot-detect.html),如果你的splash page没有正确响应这些请求,可能导致系统判定认证失败,进而忽略redirect。你可以在splash page的head里加一段逻辑,或者确保页面返回200状态码,并且包含清晰的可点击认证按钮,避免系统误判。
你的原始代码参考
<!DOCTYPE html> <html> <head> <!-- A client is authenticated by requesting the page $authtarget. So, href to it here, with an img or link text the user can click on Alternatively submit an HTTP form method=get, passing $...
把这段代码补全成带redirect参数的表单形式,应该就能解决移动端的问题了。
内容的提问来源于stack exchange,提问作者Iago Nicolai Beraldo Dalsenter

