6. 代理
因为Rachel框架是跨平台框架,它可能有wasm或js侧的target,此时客户端请求某些站点可能会有跨域的问题。
在客户端可以通过对应的proxy构造出服务端实际的代理地址,然后请求到服务端后,如果服务端也定义了proxy,
那么会在服务器中启动一个Http客户端,访问请求后再将响应结果转发回原客户端。
服务端定义代理的方式非常简单,只需要在引擎中重写proxy的路径名与白名单即可。示例如下:
| Kotlin | |
|---|---|
例如此处定义了代理的名称为proxy,那么客户端实际上发送的路径为localhost:port/proxy?proxy={url}。
客户端会将需要代理的目标地址作为参数传递到服务端,服务端接收后会通过一个正则表达式列表的白名单来决定是否代理。
请求转发包括了body数据与header。
Tip
这里的路径名与静态资源目录一样,最好在公共模块中定义,保证客户端和服务端访问的是同一个路径。