http - 如何阻止 ReverseProxy 代理请求
问题描述
有什么方法可以防止httputil.ReverseProxy
向目标服务器发送传入请求?例如,如果我有一个缓存,我可以只使用本地数据来响应客户端。或者验证后,我想向客户端返回一个错误。
解决方案
您应该能够http.DefaultTransport
使用缓存包装 ,该缓存可以根据请求使用缓存或回退到http.DefaultTransport
.
package main
import (
"net/http"
"net/http/httputil"
)
var _ http.RoundTripper = &CachingTransport{}
type CachingTransport struct {
// put your cache here
}
func (c *CachingTransport) RoundTrip(request *http.Request) (*http.Response, error) {
// determine whether to use the cache and return, or use the default transport
return http.DefaultTransport.RoundTrip(request)
}
func main() {
_ = httputil.ReverseProxy{
Transport: &CachingTransport{},
}
}
推荐阅读
- php-carbon - 我如何使用 Carbon 从月份中的星期和星期几中获取日期?
- java - 如何检查 Java 字符串的第二个数字在 1 到 5 的范围内(含)
- sql - 带有 Postgres 的 JPA 异常地将 @Lob 列中的文本作为数字写入
- java - DB和DBCollection在java中没有工作
- java - 删除失败:EACCES(权限被拒绝) - 无法从 sd 卡中删除文件
- azure-cognitive-services - 有没有办法使用微软翻译翻译整个网站
- react-native - React-native 仅通过一页禁用推送通知
- osquery - 使用 OSquery 修改或杀死进程等
- javascript - 从相关部分中删除 Active 类
- go - 致命错误:“sodium/version.h”文件未找到白色设置 libsodium-go