Skip to content

Latest commit

 

History

History
40 lines (34 loc) · 1.37 KB

protocol.md

File metadata and controls

40 lines (34 loc) · 1.37 KB

协议

这里讲讲解一些内部的运行流程相关的东西

鉴权

如果后台鉴权成功,请往网关的/login服务发送鉴权相关信息,该API将会发布证书。请自行返回给用户

鉴权相关信息结构如下:

{
  "secret":"this is secret", 
  "U": {
      "ID": 1,
      "username": "username"
  }
  
}

secret值务必和conf.yaml下的配置一样

路由

进入路由后,会检查配置。查看是否再白名单(待实现),如果不在。

将会解析X-Headers-Session,中的字段,如果不存在或者解析失败,则会报错

如果解析成功,所有请求将会封装成特殊的结构已POST请求发送到conf.d/xxx.yaml的中绑定的backend字段所指示的地址中。

其中发送地址的规则是 backend + route,如果route带有特殊规则,则会替换成匹配规则后的。

特殊结构如下:

{
  "userinfo": {
    "ID": 1,
    "username": "username"
  },
  "method": "GET",
  "requestheader": {},
  "requestbody": "base63.Encode",
  "RequestForm": "aaa=12345&bbb=123456"
}

method是原始请求的请求方式,requestheader是原始请求Header字段的json版,但是内容是动态的。requestbody是经过base64编码后的内容。因为原内容可能是二进制数据也可能是文本数据,为了能够支持json传输就编码成了base64。