问题: 想尝试一下golang的http2功能,但是遇到一个问题, js文件无法正常解析...
go version go1.10.2 windows/amd64
详情:
后端代码
func main() {
var server http.Server
http2.VerboseLogs = true
server.Addr = ":8080"
http2.ConfigureServer(&server, &http2.Server{})
// 先把css和脚本服务上去
http.Handle("/static/",http.StripPrefix("/static/", http.FileServer(http.Dir("static/"))))
http.Handle("/views/",http.StripPrefix("/views/", http.FileServer(http.Dir("static/views/"))))
http.HandleFunc("/sayHello", sayHello)
logger.Info("正在启动服务器...")
// 启用http2
err := server.ListenAndServeTLS("./keystore/cert.crt", "./keystore/rsa_private.key") //前端不能正常解析js文件
//err := server.ListenAndServe() // 前端可以正常解析js文件
if err != nil {
logger.Errorf("服务器启动错误:%v", err)
}
}
func sayHello(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello world"))
}
前端代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
Hello world!
</div>
<script src="/static/js/vue.js" type="text/javascript"></script>
<script>
</script>
</body>
</html>
项目结构:
**** 不能正常解析的情况 ****
前端错误信息:
Refused to execute script from 'https://localhost:8080/static/js/vue.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.
注:
err := server.ListenAndServeTLS("./keystore/cert.crt", "./keystore/rsa_private.key") //用这一句,前端不能正常解析js文件
err := server.ListenAndServe() // 用这一句, 前端可以正常解析js文件
已解决
就可以了
详细原因可以参考这条问答 https://studygolang.com/topics/5651
如果图像看不清楚, 右击鼠标查看图像可以看清楚
为什么都没有人回复,是我没有问清楚么?
看了报错大概是mime的问题具体的不太清楚。没用过go的http2来着
js文件不用放在https里面吧,可以引用官方js文件路径
或者改下类型
Refused to execute script from 'https://localhost:8080/static/js/vue.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled. 翻译一下就是 拒绝执行脚本,因为类型text/plain不可执行,并且严格类型校验已开启。 很简单了,改一下content type就好了。
text/javascript