协议如何在路由器网络服务器和浏览器之间进行通信
How protocol is communicated between routers web-server and the browser
我正在开发一个应用程序,该应用程序将 HTTP 消息传入和传出路由器 Web 服务器。
我面临的问题是 HTTP basic authentication
。
RFC 7617 状态:
“服务器可以使用 401 (Unauthorized)
状态码回复质询”
我从浏览器 HTTP 中看到的情况表明,并非每个路由器都是如此。例如,TPLINK TLWR840N
不会向我发送 401
,我可以通过在 http 消息中以 base64{username:pass} 的形式简单地传输 http 请求以及正确的凭据来获取资源,如图所示下面。
GET //main/ddos.htm?_=1572950350469 HTTP/1.1
Host: 192.168.0.1
Accept: */*
Connection: keep-alive
Referer: http://192.168.0.1
Cookie: Authorization=Basic YeRtaW46YWRtaW5AMTIz
如果密码输入正确,它会给我请求的内容,否则它会将我重定向到登录页面(为什么这个路由器不遵循 401
协议?)。
我有另一个 TPLINK TL-WR841N
路由器,它不像前一个路由器那样采用 base64{username:pass} 形式的凭据(在 http 消息中),而是采用 base64 形式的凭据(用户):md5(密码)。我有两个关于这个路由器的问题(和一般的所有路由器)
我想知道路由器如何将凭据协议传递给浏览器,以便我可以将其嵌入到我的应用程序中。我已经检查了 http 消息(在 Chrome/Firefox 中)但找不到正在通信协议的消息。
当我登录到 TPLINK TL-WR841N
路由器时,与以前的模型不同,网络浏览器在 URL 中包含一些 SessionID,例如URL 显示 www.192.168.0.1/SessionID/path/to/resource
。我想知道这个 SessionID 是如何传递给浏览器的?
编写路由器维护应用程序的人,以及设计显卡 driver 安装程序屏幕的人(看着你,AMD),不遵守任何准则、最佳实践或协议。
但他们也不需要。他们编写了一个恰好使用 HTTP 的应用程序,但您没有义务使用所有 HTTP。他们写 frond-end 和 back-end,所以他们可以密切控制他们的服务器和他们的客户端。
客户端很可能是一对愚蠢的 HTML 页面,它们使用 JavaScript 执行一些请求。
如果他们决定 Web 界面使用字面说明 LetMeIn: true
的请求 header 向服务器进行身份验证,那么这也可以。
HTTP 不要求服务器在缺少 header 或承载 false
时 return 401,因此他们不必这样做。
我正在开发一个应用程序,该应用程序将 HTTP 消息传入和传出路由器 Web 服务器。
我面临的问题是 HTTP basic authentication
。
RFC 7617 状态:
“服务器可以使用 401 (Unauthorized)
状态码回复质询”
我从浏览器 HTTP 中看到的情况表明,并非每个路由器都是如此。例如,TPLINK TLWR840N
不会向我发送 401
,我可以通过在 http 消息中以 base64{username:pass} 的形式简单地传输 http 请求以及正确的凭据来获取资源,如图所示下面。
GET //main/ddos.htm?_=1572950350469 HTTP/1.1
Host: 192.168.0.1
Accept: */*
Connection: keep-alive
Referer: http://192.168.0.1
Cookie: Authorization=Basic YeRtaW46YWRtaW5AMTIz
如果密码输入正确,它会给我请求的内容,否则它会将我重定向到登录页面(为什么这个路由器不遵循 401
协议?)。
我有另一个 TPLINK TL-WR841N
路由器,它不像前一个路由器那样采用 base64{username:pass} 形式的凭据(在 http 消息中),而是采用 base64 形式的凭据(用户):md5(密码)。我有两个关于这个路由器的问题(和一般的所有路由器)
我想知道路由器如何将凭据协议传递给浏览器,以便我可以将其嵌入到我的应用程序中。我已经检查了 http 消息(在 Chrome/Firefox 中)但找不到正在通信协议的消息。
当我登录到
TPLINK TL-WR841N
路由器时,与以前的模型不同,网络浏览器在 URL 中包含一些 SessionID,例如URL 显示www.192.168.0.1/SessionID/path/to/resource
。我想知道这个 SessionID 是如何传递给浏览器的?
编写路由器维护应用程序的人,以及设计显卡 driver 安装程序屏幕的人(看着你,AMD),不遵守任何准则、最佳实践或协议。
但他们也不需要。他们编写了一个恰好使用 HTTP 的应用程序,但您没有义务使用所有 HTTP。他们写 frond-end 和 back-end,所以他们可以密切控制他们的服务器和他们的客户端。
客户端很可能是一对愚蠢的 HTML 页面,它们使用 JavaScript 执行一些请求。
如果他们决定 Web 界面使用字面说明 LetMeIn: true
的请求 header 向服务器进行身份验证,那么这也可以。
HTTP 不要求服务器在缺少 header 或承载 false
时 return 401,因此他们不必这样做。