我正在尝试restify,虽然我对express比较满意,但到目前为止它非常棒。我试图在响应中设置内容类型头,如下所示:
server.get('/xml', function(req, res) {
res.setHeader('content-type', 'application/xml');
// res.header('content-type', 'application/xml'); // tried this too
// res.contentType = "application/xml"; // tried this too
res.send("<root><test>stuff</test></root>");
});
但我得到的回应却是
application/octet-stream
。我也尝试过
res.contentType('application/xml')
,但这实际上抛出了一个错误("Object HTTP/1.1 200 OK\ has no method 'contentType'"
)。在响应中将内容类型头设置为xml的正确方法是什么?
更新:
当我做
console.log(res.contentType);
时,它实际上输出application/xml
。为什么不在响应头中?卷曲片段:
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /xml?params=1,2,3 HTTP/1.1
> User-Agent: curl/7.39.0
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/octet-stream
< Content-Length: 8995
< Date: Mon, 23 Feb 2015 20:20:14 GMT
< Connection: keep-alive
<
<body goes here>
最佳答案
结果发现失败的原因是我没有使用Restify
的响应处理程序发送响应;它默认为native node.js处理程序。
我做这件事的地方:
res.send(js2xmlparser("search", obj));
我应该这么做的:
res.end(js2xmlparser("search", o));
// ^ end, not send!
关于node.js - 使用restify设置内容类型 header 会导致应用程序/八位字节流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28680755/