【问题标题】:How protocol is communicated between routers web-server and the browser路由器网络服务器和浏览器之间如何通信协议
【发布时间】:2019-11-05 12:05:39
【问题描述】:

我正在开发一个将 HTTP 消息传入和传出路由器 Web 服务器的应用程序。

我面临的问题在于 HTTP basic authentication

RFC 7617 状态:
"服务器可以使用401 (Unauthorized) 状态码回复质询"

我从浏览器 HTTP 中看到的情况并非每个路由器都如此。例如,TPLINK TLWR840N 不会向我发送401,我可以通过简单地传输 http 请求以及 http 消息中 base64{username:pass} 形式的正确凭据来获取资源,如下所示。

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(密码)。我有两个关于这个路由器的问题(以及所有的路由器

  1. 我想知道路由器如何将凭据协议传递给浏览器,以便我可以将那个东西嵌入到我的应用程序中。我检查了 http 消息(在 Chrome/Firefox 中),但找不到正在通信协议的消息。

  2. 当我登录TPLINK TL-WR841N 路由器时,与之前的模型不同,Web 浏览器在 URL 中包含一些 SessionID,例如URL 显示www.192.168.0.1/SessionID/path/to/resource。我想知道这个 SessionID 是如何传递给浏览器的?

【问题讨论】:

    标签: http browser network-programming webserver


    【解决方案1】:

    编写路由器维护应用程序的人,以及设计显卡驱动程序安装程序屏幕的人(看着你,AMD),不遵守任何准则、最佳实践或协议。

    但他们也不需要。他们编写了一个恰好使用 HTTP 的应用程序,但您不必使用所有 HTTP。他们编写前端和后端,因此可以密切控制服务器和客户端。

    客户端很可能是一对愚蠢的 HTML 页面,它们使用 JavaScript 执行一些请求。

    如果他们决定 Web 界面通过请求标头向服务器进行身份验证,请求标头字面意思是 LetMeIn: true,那么这也可以。

    HTTP 不要求服务器在该标头丢失或带有 false 时返回 401,因此它们不必这样做。

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多