node搭建的代理服务器请求静态资源出错

后台返回给我的接口中,有一个图片的绝对路径。比如后台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,不知道会不会是这里的问题

图片描述

阅读 2.3k
1 个回答

是,这是默认值,意思是未知的文件。

补充

Web

浏览器确定格式只根据MIME,如果你一个css文件返回的Content-Typeimage/jpeg实际上他也会当这个文件是图片,就算你是.css后缀。

附件

浏览器确定格式仅根据文件后缀以及文件的具体格式(比如.jpg.txt)解析。

回到问题,application/octet-stream表示未知文件,表明某种二进制流数据,此时浏览器的行为是下载。而通过地址栏打开的意思是,下载成本地附件,然后通过浏览器打开附件。

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