nginx json文件服务器,nginx服务器返回json文件时content-type不正确的坑
最近在用vue写个demo时,使用vue-resource 的$htpp.get()请求一个json文件时,webstrom本地环境可以获取到,http响应报文包头中content-type为application/json,通过$http.get().then(res => {})回调函数中的res.body.result即可获取json文件的内容,但是在上传我的云服务器后请求返回的是content-type:application/octet-stream:
即返回的是一个二进制流的文件,在下载文件时会用到这个类型,但是res.body.result就获取不到内容了。
踩坑
前端在百度搜索相关问题几乎没有,在前端群里没人知道…算是遇到了个奇葩的问题…
首先想到的是在发送get请求时设置http请求报文包头中的content-type=application/json:
1
2
3Vue.http.options.headers = {
'Content-Type':'application/json'
};
但是这只是设置报文发送的格式,并没有设置客户端希望服务器返回的内容格式,于是继续设置Accept:
1
2
3
4Vue.http.options.headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
测试还是不行,响应报文中content-type依旧是application/octet-stream,很苦恼…
服务器
在鼓捣半天确认前端没有错误后,我觉得问题应该出在服务器上。我的服务器centos是基于nginx,于是开始搜索关于nginx不返回json格式内容的问题。得到要在server中配置location拦截:
1
2
3
4location ~ ^/get_json {
default_type application/json;
return 200 '{"status":"success","result":"nginx json"}';
}
这个配置要在nginx.conf中配置(我的配置文件还有个nginx.conf.default,两个都要配置),如果不知道nginx.conf文件在哪,可以使用搜索命令:
1find / | grep nginx.conf
location 具体在文件哪里配置,参考nginx配置文件nginx.conf详细解释
配置文件修改之后要重新运行配置文件,不过要进入/nginx/sbin中执行命令:
1./nginx -s reload
测试一下还是不行…
最后在stackoverflow上看到了一个问题:Enabling content-type application/json for all the json files in nginx,即nginx中没有设置json文件的content-type为application/json!
于是,找到和nginx.conf同在一个文件夹conf下的mime.types文件和mime.types.default,修改。
1
2vi mime.types
vi mime.types.default
加上:application/json json;
效果图:
然后重启配置文件,进入/nginx/sbin中执行命令:
1./nginx -s reload
问题解决!
总结
为什么nginx的默认配置里面没有application/json呢…不科学…
如果你遇到同样的问题,我的建议是先查看mime.types里面有没有application/json的配置,没有就加上,然后测试。无效的话就在nginx.conf中加入location的配置,在js中为get方法配置content-type和accept,就可以了。
nginx json文件服务器,nginx服务器返回json文件时content-type不正确的坑相关推荐
- ajax请求返回的数据格式,ajax请求服务器返回json数据格式
ajax请求服务器返回json数据格式 内容精选 换一换 消息请求返回的状态码如下表所示. 使用API数据源,您可以通过调用一个第三方的REST(Representational State Tran ...
- 打开ftp服务器上的文件时发生错误。请检查是否有权限访问该文件夹
打开ftp服务器上的文件时发生错误.请检查是否有权限访问该文件夹 详细信息:the opration time out 我以为是文件夹内容太多,访问超时,所以设置了下服务器的超时为2000秒,也不起作 ...
- 服务器上解压文件时提示“gzip: stdin: not in gzip format,tar: Child returned status 1,tar: Error is not recovera“
今天在服务器解压文件时一直在报这个错: 报错原因: 看第一行的提示就是"gzip: stdin: not in gzip format",此时我们需要用file查一下文件的类型,果 ...
- nginx优化之请求直接返回json数据
对于有些服务端接口返回是固定值的json,可通过配置nginx直接返回json,减少程序的加载对资源的占用,减少接口响应时间 location ~* (request/update)$ { ...
- java中使用ajax请求数据格式化,ajax请求服务器返回json数据格式化
JQuery--实现Ajax应用 实现Ajax应用 1 .load()异步请求数据,通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,调用格式为load(url,[data], ...
- linux服务器返回json,Linux 命令行工具解析和格式化输出 JSON的方法
JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otat ...
- 第三节:微信小程序模拟动态加载服务器返回json数据
上一节虽然完成了新闻的静态展示页面,但是实际开发中,数据通常是请求服务器返回的json数据,这时候就需要页面动态加载显示服务器返回的数据. 在完成的静态页面的代码上,需要做相应的修改,首先需要编写po ...
- nodejs从服务器返回静态文件,nodejs静态资源服务器
nodejs静态资源服务器 内容精选 换一换 WebSdk需要客户结合自身业务需求搭建web服务器并集成sdk使用.自行搭建一个web服务器,将wwwroot下的文件拷贝到web服务器的静态资源目录下 ...
- 编写文件服务器,编写服务器的头文件
编写服务器的头文件 内容精选 换一换 当您的裸金属服务器无法SSH登录时,我们首先建议您通过控制台远程登录.SSH登录失败时,请首先尝试能否通过管理控制台远程登录裸金属服务器.登录管理控制台.选择&q ...
最新文章
- debug运行可以,release运行报错的原因及修改方法
- python ssh连接_python 建立SSH连接发送指令
- 数据结构Java05【二叉树概述、二叉树遍历、堆排序、线索二叉树实现及遍历】
- 【语义分割】ICCV21_Self-Regulation for Semantic Segmentation
- Acwing 1085. 不要62
- Activiti 5.3:子流程(subProcess)
- 2010年高教社杯全国大学生数学建模竞赛题目B题解析及层次分析法AHP在其中的应用
- ASP.NET状态管理之五(Cookie)
- c 打印二叉树_二叉树遍历(非递归和递归实现)
- 电子元器件晶体二极管的识别和检测注意事项
- 【虹科车用总线技术】PCAN-USB使用手册
- 软文发布时标题怎么写,这几点值得注意!
- win7 修改html文件图标,如何更改文件图标,教您Win7如何更改图标
- StarCraft II Learning Environment
- 【成功】qlv转MP4,超简单方法
- 前端面试系列-JavaScript作用域和作用域链
- 如何让word中代码更优雅美观【图解】【可微调】
- 白帽子学习——Metasploit渗透测试指南
- DevOps之基础设施
- linux网络引导安装windows,pxe启动网络安装CentOS(win平台)