- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经从1.13
升级了我的本地Go版本至1.14
然后我通过使用 go mod
重新初始化来更新我正在处理的项目.
本地:
$ go version
go version go1.14 linux/amd64
go.mod
我的项目:
module example-project
go 1.14
mime
中有更新Go 中的包 1.14更改 .js
的默认类型来自application/javascript
的文件至text/javascript
.
我有一个应用程序,它提供一个包含 JavaScript 文件的文件夹,如下所示:
func main() {
http.HandleFunc("/static/", StaticHandler)
http.ListenAndServe(":3000", nil)
}
func StaticHandler(w http.ResponseWriter, r *http.Request) {
fs := http.StripPrefix("/static", http.FileServer(http.Dir("public/")))
fs.ServeHTTP(w, r)
}
我更新了一个测试用例以反射(reflect) Go 1.14 中的 mime 更改:
func TestStaticHandlerServeJS(t *testing.T) {
req, err := http.NewRequest("GET", "/static/index.js", nil)
if err != nil {
t.Fatal(err)
}
rr := httptest.NewRecorder()
handler := http.HandlerFunc(StaticHandler)
handler.ServeHTTP(rr, req)
if status := rr.Code; status != http.StatusOK {
t.Errorf("handler returned wrong status code: got %v want %v",
status, http.StatusOK)
}
expected := "text/javascript; charset=utf-8"
if rr.Header().Get("Content-Type") != expected {
t.Errorf("handler returned unexpected Content-Type: got %v want %v",
rr.Header().Get("Content-Type"), expected)
}
}
当我在本地运行此命令时,检查内容类型的测试用例失败:
TestStaticHandlerServeJS: main_test.go:27: handler returned unexpected Content-Type: got application/javascript want text/javascript; charset=utf-8
我还可以在浏览器中确认该文件确实使用 Mime 类型“application/javascript”提供,就像 Go 1.13 中那样。
当我使用官方 golang:1.14.0-alpine3.11
在 Docker 容器上运行此测试时图像,此测试通过,它反射(reflect)了 mime
的行为变化包。
因此,我留下了一个在本地失败并传递到容器的测试用例。我在本地只维护一个 Go 版本,那就是 1.14
正如我上面所展示的。我的本地 Go 安装有 mime
的原因可能是什么?包的行为不同?
最佳答案
这对我来说也很有趣,我也有和你一样的行为 - go 1.14 在我的机器(macOs catalina)应用程序/javascript 上交付,而不是文本/javascript。我调试了程序,在mime包的type.go中发现了这个函数:
func initMime() {
if fn := testInitMime; fn != nil {
fn()
} else {
setMimeTypes(builtinTypesLower, builtinTypesLower)
osInitMime()
}
}
else block 中正在发生有趣的事情。设置builtInTypes(其中扩展名js
分配给text/javascript
)后,系统会将文件扩展名分配给内容类型,这会覆盖内置分配。在 Mac 上,它将转到文件 type_unix.go,其中 files
"/etc/mime.types",
"/etc/apache2/mime.types",
"/etc/apache/mime.types",
经过测试可用,在我的例子中,操作系统中存在一个文件 /etc/apache2/mime.types
并且它包含......令人惊讶的一行应用程序/javascript js此行覆盖 .js 扩展的 go 内置定义,并导致 Content-Type: application/javascript
被传递到客户端并导致您的测试失败。
关于与官方 Docker 镜像相比,Go Mime 包 (1.14) 在本地的行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696133/
今天上午据小米穿戴官方消息,为了保障更好的使用体验和更充足的备货,小米手表尊享版将延期至2020年2月开售。 据了解,早在今年11月初小米正式发布小米手表,共有标准版和尊享版两个版本,价格分别为1
我的意思是,如果我可以运行例如官方 docker 镜像 DEBIAN 并在此之上 运行具有相同支持架构的官方 docker 镜像 NGINX,例如Linux x86-64? 它会像我以非 docker
在 .NET 3.5 中,大量扩展方法被添加到核心代码库中。我注意到在 MSDN 中,IEnumerable<> 等添加了有关扩展方法的部分。 是否有已添加的所有扩展方法的列表以供引用? 编辑感谢您的
在vertx指南中,链接异步调用的顺序组合如下所示: FileSystem fs = vertx.fileSystem(); Future startFuture = Future.future();
neo4j 文档有 this page about creating unit tests for neo4j. 本质上它建议我们创建一个模拟数据库使用 graphDb = new TestGraph
我是 C++ 的新手,我想了解链接器是如何正式工作的。我正在使用 Linux Mint 16。是否存在 ld 链接器官方规范? 最佳答案 您可能会对链接器和共享库有更多了解 here还有here是 l
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我想创建一个自定义 Android 汽车应用程序,而不会分散驾驶员的注意力。我浏览了很多博客和网站,发现自 3.0 版本以来曾经有一些自定义应用程序被屏蔽。这些自定义应用程序的开发人员使用的是非官方的
我刚找到 this Project就像。嘿。为什么不尝试使用它呢? 所以。刚刚下载它(我没有做任何更改!),打开 Android Studio,运行它,然后遇到以下问题。 error: cannot
Docker 的官方 Postgres 镜像使用两个环境变量:POSTGRES_USER 和 POSTGRES_PASSWORD 参数化数据库创建: https://registry.hub.dock
我刚刚从 Python download page 下载了 Python 2.7.3 64 位安装程序我想验证签名。所以我需要导入 key ,我的首选方法是从受信任的 key 服务器获取它们。 Pyt
当我安装 Andoird 5.0 SDK 并导入 Camera2Basic 示例源代码时。CameraDevice.StateListener 和 CameraCaptureSession.State
在Design Philosophy节official Fragment guide ,它说: You should design each fragment as a modular and reu
我正在使用 Roslyn 编写一个应用程序来从语法和语义上分析 C# 源代码。对于正在分析的源代码中定义的每种类型,我想存储它是引用类型(类)、值类型(结构)还是接口(interface)。 类型的类
有没有官方的 XSLT 验证器,比如 http://validator.w3.org/用于 HTML 和 XHTML? 我知道http://validator.w3.org/也可用于验证 XML 和
我主要使用 C++ 进行科学计算,最近我一直将自己限制在一个非常类似于 C 的 C++ 特性子集;即,除了复杂和 STL 之外没有类/继承,模板仅用于查找/替换各种替换,以及其他一些我无法用语言表达的
我了解到Google会根据访问它的浏览器/设备来自动提供 TTF , EOT , WOFF 或 SVG 字体文件。 现在,我计划从服务器本身托管和提供字体文件,为此,我首先必须下载Web字体的所有文件
他们有什么不同? 例如,与官方 SDK 相比,选择 libfreenect 或 OpenNI+SensorKinect 有什么优势,反之亦然? 有什么缺点? 最佳答案 请注意,以下答案是按日期计算的,
我想使用官方的 Hashicorp 镜像来运行 Terraform 而不是手动安装。我已经关注了 dockerhub 上的文档,但没有关于如何在何处安装卷的任何详细信息 - 例如在当前目录中使用“ma
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
我是一名优秀的程序员,十分优秀!