后台返回给我的接口中,有一个图片的绝对路径。比如后台ip是11.11.1,图片路径是/res/default.jpg。我在网址中输入11.11.1/res/default.jpg可以看到图片,但是却显示不出来
我是通过客户端发送请求,用node写了代理,得到响应后,拿到图片路径信息后给到img标签的src属性。
这是我的node代理代码
else if (pathname == '/res/default.jpg') {
(function() {
var options = {
host: "11.11.1",
path: pathname,
method: 'get'
};
console.log(pathname);
let req = http.request(options, function(req) {
req.on("data", function(chunk) {
sendmsg += chunk;
});
req.on("end", function(d) {
var list = JSON.stringify(sendmsg);
response.writeHead(200);
response.end(sendmsg);
});
});
req.end();
})()
}
然后的js发送请求代码
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {
var text = JSON.parse(xhr.responseText);
var imgsrc= text["data"]["list"][0]["picture"];
document.getElementsByTagName('img')[0].setAttribute('src', imgsrc);
} else {
alert("error: " + xhr.status);
}
}
}
var url = "/Blog/listAll/1"
xhr.open("get", url, true);
xhr.send(null);
在浏览器中图片的网址是:http://127.0.0.1:8080/res/default.jpg。 但是我发现它的type是octet-stream,不知道会不会是这里的问题
是,这是默认值,意思是未知的文件。
补充
Web
浏览器确定格式只根据
MIME
,如果你一个css
文件返回的Content-Type
为image/jpeg
实际上他也会当这个文件是图片,就算你是.css
后缀。附件
浏览器确定格式仅根据文件后缀以及文件的具体格式(比如
.jpg
改.txt
)解析。回到问题,
application/octet-stream
表示未知文件,表明某种二进制流数据,此时浏览器的行为是下载。而通过地址栏打开的意思是,下载成本地附件,然后通过浏览器打开附件。