我正在尝试使用angularJS的$ http服务读取data.gz中的json。但我只是将奇怪的符号和字符作为回应。我目前在nodeJS服务器中本地运行应用程序。我在这里错过了什么吗?
$http({
url: 'systemRes.10.gz',
method: 'GET'
})
.then(function successCallback(response) {
console.log(response.data); //shows strange characters
});
Click to view the strange characters.
由于该文件位于本地目录中,因此将标题设置为以下内容会导致错误:拒绝设置不安全的标题"接受编码"
headers: { 'Accept-Encoding': 'gzip' }
答案 0 :(得分:0)
尝试访问本地gz文件不会提供Content-Encoding
标头,浏览器必须解压缩该文件。
这是前一篇文章所证实的 - > Angular gunzip json file automatically : Refused to set unsafe header "Accept-Encoding"
如果您需要在生产中使用js文件,您应该尝试使用适当的文件服务器(如nginx或apache)来提供文件。
否则,如果是一次性脚本,则应考虑使用提供-g
选项的http-server,为您提供该文件的gzip压缩版本。例如,如果您的文件是systemRes.10.json.gz
,那么请使用
http-server
$ npm i http-server
$ node_modules/.bin/http-server -g
您可以编写以下js脚本(使用fetch,但$ http行为应该相同)
fetch('http://localhost:8080/systemRes.10.json')
.then(resp => resp.json())
.then(json => console.log(json))
.catch(e => console.error(e))
我测试了它并提供了Content-Encoding
标题,所以你应该对你的测试有好处。