gpt4 book ai didi

go - net/http调用的全局控制列表

转载 作者:行者123 更新时间:2023-12-01 22:45:54 24 4
gpt4 key购买 nike

有没有一种方法可以在net / http软件包中全局设置某些内容,以防止/仅允许某些域/ ip被应用程序调用?我知道我也可以在操作系统级别上执行此操作,但是我想在没有外部配置说明的情况下推出我的应用程序。
我可以轻松编写一个包装net / http的程序包,但是我想知道我是否真的可以在本机net / http库中进行过滤。我在图书馆中找不到与搜索字词相关的任何内容,但也许我看错了。
我为什么要这样做?我不想让任何 future 的程序员都调用例如http.Get,而只调用Intranet内部的任何IP /域,并且可能向外界公开某些内容。因此,这更是一种偏执狂,但我只是想知道是否可以在Go全局范围内(甚至在编译时)执行此操作,而不必为每个要运行的OS变量设置OS级别的沙箱。

最佳答案

net/http包将导出DefaultTransport,默认http客户端将使用它。您可以在DialContext上设置自定义net/http.DefaultTransport。此DialContext是通过自定义net.Dialer.DialContext上的net.Dialer创建的,自定义ResolverControl和ojit_code结构成员可在其中实施域名白名单或IP白名单。
请注意,此方法并不完美,因为我们不能保证您将来的程序员将使用默认的http客户端或默认的传输方式。最好的选择可能是您已经在问题中提到的,即实现一个包装net / http程序包的程序包,并设定程序员应该使用此程序包而不是标准的net / http程序包的期望。

请参阅下面的注释中提到的其他警告(非常有效)。

关于go - net/http调用的全局控制列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62682060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com