- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我使用 http.FileServer
提供来自 dirPath
的 jpeg 图像:
http.Handle("/o/", http.StripPrefix(
path.Join("/o", dirPath), http.FileServer(http.Dir(dirPath))))
我不明白的是当对不存在的文件发出请求时如何记录。当我使用浏览器发出请求时,我可以看到 http.FileServer
返回 404 page not found,但服务器控制台上没有。
最佳答案
http.Handler
由 http.StripPrefix()
返回和 http.FileServer()
不要记录 HTTP 404 错误。您必须扩展它们的功能才能实现您想要的。
我们可以将 http.StripPrefix()
或 http.FileServer()
返回的 http.Handler
值包装在另一个 http.Handler
或 http.HandlerFunc
.包装处理程序后,当然要注册包装器。
包装器实现将简单地调用包装器,一旦它返回,就可以检查 HTTP 响应状态代码。如果它是一个错误(或者特别是 HTTP 404 Not Found),可以适本地记录它。
问题是 http.ResponseWriter
不支持读取响应状态码。我们可以做的是我们也包装 http.ResponseWriter
并且在写入状态代码时,我们将存储它以备后用。
我们的 http.ResponseWriter
包装器:
type StatusRespWr struct {
http.ResponseWriter // We embed http.ResponseWriter
status int
}
func (w *StatusRespWr) WriteHeader(status int) {
w.status = status // Store the status for our own use
w.ResponseWriter.WriteHeader(status)
}
并包装http.Handler
:
func wrapHandler(h http.Handler) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
srw := &StatusRespWr{ResponseWriter: w}
h.ServeHTTP(srw, r)
if srw.status >= 400 { // 400+ codes are the error codes
log.Printf("Error status code: %d when serving path: %s",
srw.status, r.RequestURI)
}
}
}
主要功能是创建一个文件服务器,包装并注册它:
http.HandleFunc("/o/", wrapHandler(
http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))
panic(http.ListenAndServe(":8181", nil))
请求一个不存在的文件时的示例输出:
2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2
关于http - 在 http.FileServer 上记录 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017342/
我有一个带有 FileServer 函数的 Golang Shell,我希望能够更改 src 目录。这是我所拥有的: func Server() { wdir, _ := os.Getwd()
例如,用户可以将您的 url 与 linux 命令一起放在文件夹/目录中吗? 假设我的服务器包括: bin/ serverfile.go ... public/ index.h
go 核心中的 http 包存在问题。尽管响应正文中的 Content-Length 是正确的,但文件内容似乎已被缓存。在这里演示的是我正在编写的应用程序的简化版本。 package main imp
我有一个简单的文件夹: Test/ main.go Images/ image1.png image2.png index.
在 https://www.alexedwards.net/blog/serving-static-sites-with-go ,有一个静态文件服务器在单个目录中为站点提供服务的示例:static。
上次写了一个2行实现一个静态服务器的文章 今天群里有个哥们是这么写居然返回的是404 见鬼了嘛?? http.handle("/js", http.FileServer
我的 Web 应用程序需要让管理员用户在 .net core 2 应用程序中添加和删除提供的文件夹。我找到了一种提供服务文件夹列表的方法,但我找不到在配置应用程序后动态添加或删除它们的方法。 如何从应
我们有一个服务器应用程序,它将文件从 clientA 中继到 clientB、clientC、clientD 等。我们将这种文件中继称为任务。如果有很多任务在执行,那么CPU使用率会非常非常高。 我想
初学者围棋题 我有这个目录结构。 app_executable html | - index.html data | - static_file.json 我无法让它为 data/stat
我的项目结构如下: /rootfolder index.html main.js main.go 我正在尝试通过 FileServer() 提供静态 javascript 文件
我正在尝试在 Go 中启动一个 HTTP 服务器,它将使用我自己的处理程序来提供我自己的数据,但同时我想使用默认的 http FileServer 来提供文件。 我在使 FileServer 的处理程
http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。 http
目录树: . ├── main.go └── web ├── app.go └── views ├── index.html └── js
我在 Go 中使用 http.FileServer 将一些静态文件提供到目录中。 这就是我使用 mux 作为路由器映射它的方式: r.PathPrefix("/download").Handler(h
我使用 http.FileServer 提供来自 dirPath 的 jpeg 图像: http.Handle("/o/", http.StripPrefix( path.Join("/o",
我试图让 Mechanize 登录到 fileserve.com 我已经尝试了下面的代码 require 'rubygems' require 'mechanize' a =
我目前正在使用基本的 http.FileServer设置为提供一个简单的静态站点。我需要使用自定义未找到页面来处理 404 错误。我一直在研究这个问题,但我无法确定最好的解决方案是什么。 我已经看到了
今天我有一台 NAS 服务器在欧洲充当网络服务器、MySQL 和文件服务器,但现在我还需要可以从美国访问它。我的问题是延迟非常慢。我能做些什么来改善这一点 - 我可以以某种方式同步两个 NAS 站,还
我可以将 Netty 与 Resteasy 一起使用或作为 Fileserver : public void file() { ServerBootstrap bootstrap = new
我正在用 Go 制作一个小型独立服务。 UI 需要一些 JS 库,所以我想,我会使用 http.FileServer 来提供来自 node_modules 的 JS 文件 router := chi.
我是一名优秀的程序员,十分优秀!