Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
nightingale
提交
eb6275eb
N
nightingale
项目概览
DiDi
/
nightingale
9 个月 前同步成功
通知
46
Star
7053
Fork
1161
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
nightingale
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
eb6275eb
编写于
8月 02, 2023
作者:
N
ning
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: proxy api
上级
ac3a5e52
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
35 addition
and
3 deletion
+35
-3
center/router/router_proxy.go
center/router/router_proxy.go
+35
-3
未找到文件。
center/router/router_proxy.go
浏览文件 @
eb6275eb
package
router
import
(
"bytes"
"context"
"crypto/tls"
"fmt"
"io"
"net"
"net/http"
"net/http/httputil"
...
...
@@ -164,10 +167,39 @@ func (rt *Router) dsProxy(c *gin.Context) {
transportPut
(
dsId
,
ds
.
UpdatedAt
,
transport
)
}
modifyResponse
:=
func
(
r
*
http
.
Response
)
error
{
// 当后端服务返回401时,改变响应状态码和内容
if
r
.
StatusCode
==
http
.
StatusUnauthorized
{
body
,
err
:=
io
.
ReadAll
(
r
.
Body
)
if
err
!=
nil
{
return
err
}
r
.
Body
.
Close
()
// 重新填充响应体
r
.
Body
=
io
.
NopCloser
(
bytes
.
NewBuffer
(
body
))
// 创建自定义错误,并返回
customErr
:=
fmt
.
Errorf
(
"unauthorized access: %v"
,
string
(
body
))
// 调整返回的HTTP状态码和内容
r
.
StatusCode
=
http
.
StatusOK
r
.
Status
=
"200 OK"
c
.
JSON
(
http
.
StatusOK
,
gin
.
H
{
"err"
:
customErr
.
Error
(),
})
return
customErr
}
return
nil
}
proxy
:=
&
httputil
.
ReverseProxy
{
Director
:
director
,
Transport
:
transport
,
ErrorHandler
:
errFunc
,
Director
:
director
,
Transport
:
transport
,
ErrorHandler
:
errFunc
,
ModifyResponse
:
modifyResponse
,
}
proxy
.
ServeHTTP
(
c
.
Writer
,
c
.
Request
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录