android - 强制门户出现需要什么响应?
问题描述
我正在尝试在小型嵌入式设备上实现强制门户。
据我了解,我需要的只是捕获对特殊 url 的智能手机请求并发送包含强制门户页面的响应。为了不维护所有可能的 URL 列表,我设置了一个 DNS,它将所有主机解析为我的设备 IP。
现在,当我将 android 设备连接到我的网络时,我会收到一个请求/generate_204
并发送重定向响应。以下是 curl 命令的请求和响应示例:
curl -v http://google.com/generate_204
* Trying 192.168.1.1...
* Connected to google.com (192.168.1.1) port 80 (#0)
> GET /generate_204 HTTP/1.1
> Host: google.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Content-Type: text/html
< Content-Length: 0
< Location: /
<
* Connection #0 to host google.com left intact
使用 Postman/Chrome 我被重定向到 192.168.1.1/ 并加载了所需的页面。但是我测试了 4 台安卓设备,只有一台向我展示了一个弹出窗口。ios也有同样的问题。/hotspot-detect.html
我收到了一个返回与上述相同响应的请求,但什么也没发生。我在这里想念什么?
谢谢!
解决方案
我的理解是,如果您返回的不是强制专用门户测试站点返回的内容(即,如果是请求的 URI 或http://captive.apple.com ,则http://google.com/generate_204返回的内容) //hotspot-detect.html如果那是请求的 URI,则返回)然后将显示您返回的内容,即所谓的闪屏。返回这些 URL 所返回的内容应该会抑制启动屏幕,并让设备误以为它已连接到 Internet。
推荐阅读
- c# - 如何在不删除html标签的情况下将html转换为文本
- javascript - 检查文本是否溢出到 svg 的文本元素之外
- javascript - Jquery 验证不适用于 g:form
- c# - 如何使用 C#/.NET 的 FFmpeg 包装器从 .h264 转换为 .ts?
- javascript - 如何在高阶可观察对象中返回外部可观察对象而不是内部对象
- c# - Newtonsoft.Json DefaultContractResolver 从字典中删除键
- reactjs - SVG在浏览器中不同
- amazon-web-services - 从 EC2 实例调用 AWS Lambda 函数
- python - NLTK PCFG ' AttributeError: 'PCFG' 对象没有属性 'rules''
- c# - C#如何获得字符串中所有数字的总和,因为太长而无法转换为整数?