用img标签加载一张图,和直接在地址栏访问这张图的区别

比如说 http://m0-pub.bybutter.com/42... 这张图,用img标签是可以加载出来的。但是在地址栏直接访问会直接下载,且下载下来还是没有扩展名的。

阅读 3.7k
2 个回答

以 img 方式加载,浏览器会自动遵循同域策略,在 GET 请求中追加 Cookies、ETag、Cache-Control、Referer 等请求头信息,并且无论服务端返回何种数据,浏览器都会尝试以图片的方式去解析。

地址栏直接输入,浏览器则不会携带 Referer(很多反盗链技术也是基于此),并按照服务端返回的 Content-Type 响应头来尝试解析响应结果。

你这个 URL,响应头 Content-Type 是 application/octet-stream,浏览器从响应头上无法识别这是一个图片类型的文件。

如果你想要地址栏中能直接打开,应该让服务端返回正确的 MIME 类型(如 image/jpegimage/png 等)。看上去你这是一个阿里云 OSS 的文件地址,那么你需要到 OSS 控制台或使用 API 来修改对应文件的 MIME 元数据属性;并在之后上传文件时就指明正确的文件类型。

image.png

网页里有 referer 和 cookie,可能会影响到服务器返回的 content-type

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏