猿问

资源被解释为图像但使用 MIME 类型 text/html appengine go 传输

更新新版本的 go appengine 后,我无法将图像加载到页面中。我不知道我错过了什么,但以前它曾经非常简单。我能够编译代码,但是当我在浏览器上启动应用程序时,我收到以下消息:


资源被解释为图像但使用 MIME 类型 text/html 传输:http://[...]/img/myimg.jpg


我的应用程序就像这样简单:


索引.html


<!DOCTYPE html>

<html>

<title>Hello</title>

<head>

</head>

<body>

    <h1>Welcome to my website</h1>

    <img src="img/myimg.png" />

</body>

</html>

应用程序.yaml


application: myapp

version: 1

runtime: go

api_version: go1


handlers:

- url: /.*

  script: _go_app


- url: /img

  static_dir: img

  mime_type: image/jpg

你好去


package hello


import (

    "net/http"

    "text/template"

)


func init() {

    http.HandleFunc("/", handler)

}


func handler(w http.ResponseWriter, r *http.Request) {

    template.Must(template.ParseFiles("index.html")).Execute(w, nil)

}

该文件说:“每个文件都使用MIME类型,其文件扩展名,除非目录的MIME_TYPE设置覆盖对应先得”,但它不有所作为我是否没有定义在app.yaml文件中MIME_TYPE。


这个论坛上有很多相关的问题,但我找不到任何可以有效解决问题的答案。


作为说明,我尝试使用不同的图像(jpg 和 png)以确保图像本身没有问题。我还将相同的应用程序(html 和图像)部署到 apache 网络服务器,并且运行良好。


蝴蝶不菲
浏览 304回答 1
1回答

白衣非少年

您 app.yaml 是错误的,您的 img 处理程序应该是第一个,此时 img/myimg.jpg 将由您的主应用程序处理程序处理,因此是 text/html 响应。请记住处理程序按照它们定义的顺序匹配,如果您/.*用作正则表达式,您的主处理程序将捕获所有内容。此外,您的图像标签应该是绝对的,否则如果您有超过一页的深度,您的相对 img 路径将被附加到页面上。
随时随地看视频慕课网APP

相关分类

Go
我要回答