问题标签 [go-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
375 浏览

go - 阻止来自 gorilla/mux 的打开 URL 重定向

我正在使用 Go + gorilla/mux v1.4 框架开发一个 RESTful Web 应用程序。发布后的一些基本安全测试揭示了应用程序中的开放 URL 重定向漏洞,该漏洞允许用户使用外部 URL 提交特制请求,导致服务器以 301 重定向响应。

我使用Burp Suite对此进行了测试,发现任何重定向到应用程序中外部 URL 的请求似乎都以 301 Moved Permanently 响应。我一直在寻找在发送 301 之前拦截这些请求的所有可能方法,但这种行为似乎已融入 net/http 服务器实现

这是发送到服务器的原始请求 (myapp.mycompany.com:8000):

任何时候的响应都是:

尽管检查了 request.URL 以防止在 http.handler 中发生这种类型的重定向,但我没有任何运气让请求到达处理程序。似乎基本 http 网络服务器正在执行重定向,但不允许它访问我在 PathPrefix("/").Handler 代码中定义的自定义处理程序代码。

我的目标是确保应用程序针对此类请求返回 404-Not Found 或 400-Bad Request。有没有其他人遇到过大猩猩/多路复用器的这种情况。我在一个 Jetty 网络应用程序上进行了同样的尝试,发现它返回了一个完全有效的 404。我已经在这工作了几天,并且真的可以使用一些想法。

0 投票
0 回答
118 浏览

go - 在 Go 中发出 HTTP 1.0 请求

有什么方法可以发出 HTTP 1.0 请求吗?

Go 总是恢复使用 HTTP 1.1

我尝试将 request.Proto 设置为 HTTP 1.0 但它没有改变任何东西

0 投票
0 回答
211 浏览

go - 在 Go 中不使用内置 DNS 解析器(使用代理时)为域使用自定义 IP

我正在开发一个应用程序,它必须通过 HTTP 代理进行连接,然后使用该连接对域名进行 GET 请求。域名应该手动解析,例如给它它应该拨打的IP。这正是我面临的问题。

使用上面的代码,IP 地址将使用 DNS 自动解析。如何用自己的 IP 为客户提供服务?

使用的包:“golang.org/x/net/proxy”“github.com/magisterquis/connectproxy”

提前致谢。

0 投票
1 回答
467 浏览

go - 中间件 HTTP 测试在不应该通过时通过

我编写了一些中间件来检查以确保 JWT 令牌有效:

我已经尝试为此编写一些测试,但我只能掌握我哪里出错了,测试应该失败,因为令牌无效但它仍然通过:

有人可以解释我要去哪里错了吗?

0 投票
0 回答
747 浏览

http - 使用 ErrorCode CANCEL 看到 http2 RST_STREAM 帧

看到一些流从客户端发送到服务器的 RST_STREAM 和 CANCEL。添加了两个流数据,在一种情况下看到 RST_STREAM,在另一种情况下没有。

看到 RST_STREAM 的 HTTP2 流

看不到 RST_STREAM 的 HTTP2 流

我不理解这里的行为。由于已经在响应数据中收到了 END_STREAM,为什么 http2 堆栈正在发送 RST_STREAM。

Note1: 使用 golang 的 http2 包golang.org/x/net/http2

注2:两种流的数据内容没有区别

0 投票
1 回答
109 浏览

go - 如何在方法中包装 http.Handler

在 go 中获取文件系统的最简单方法是下面的代码。

但是出于客观设计的目的,我更喜欢将函数体包裹在这样的方法中。

我应该如何将代码内容包装在文件结构方法中?

0 投票
1 回答
1254 浏览

go - golang http客户端返回错误的内容类型

我有一个非常简单的 Go 程序,它在 URL 上执行 HTTP HEAD,并打印响应的内容类型:

当我运行它时,它返回以下内容:

但是,当我使用 执行相同操作时curl,它会返回不同的内容类型(在原始响应中和重定向之后):

难道我做错了什么?Go 中有没有办法为此类 URL 获取正确的内容类型?我在 Ubuntu 上使用 Golang 1.14.4。上述 URL 不是唯一存在此问题的 URL。

0 投票
1 回答
1407 浏览

http - 从 url 中删除尾部斜杠 - Go static server

我已经建立了一个简单的 Go 静态文件服务器http.FileServer。如果我有一个类似的目录结构public > about > index.html,服务器将正确解析/aboutabout > index.html,但它会添加一个尾部斜杠,因此 url/about/变为

有没有一种简单的方法可以在使用时删除这些斜杠http.FileServer?最终,它可以以任何一种方式工作——如果可能的话,不使用尾部斜杠主要是个人喜好。

0 投票
1 回答
50 浏览

go - FileServer 使用 MIME 类型错误而不是 404 处理 not found css

我正在运行一个基本http.FileServer的静态站点服务,我遇到了一个问题,即对不存在的 css 文件的请求因 MIME 类型错误而被取消:

理想情况下,我更希望用 404 错误来处理它,因为它实际上应该是这样的。我可以尝试任何可能的解决方法吗?

0 投票
1 回答
91 浏览

http - 使用 http.FileServer 处理自定义 404 页面

我目前正在使用基本http.FileServer设置来提供简单的静态站点。我需要使用自定义未找到页面来处理 404 错误。我一直在研究这个问题,但我无法确定最好的解决方案是什么。

我已经看到了一些关于 GitHub 问题的回复,内容如下:

您可以实现自己的ResponseWriter,它在WriteHeader.

这似乎是最好的方法,但我有点不确定这将如何实现。如果有此实现的任何简单示例,将不胜感激!