最近在用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不正确的坑相关推荐

  1. ajax请求返回的数据格式,ajax请求服务器返回json数据格式

    ajax请求服务器返回json数据格式 内容精选 换一换 消息请求返回的状态码如下表所示. 使用API数据源,您可以通过调用一个第三方的REST(Representational State Tran ...

  2. 打开ftp服务器上的文件时发生错误。请检查是否有权限访问该文件夹

    打开ftp服务器上的文件时发生错误.请检查是否有权限访问该文件夹 详细信息:the opration time out 我以为是文件夹内容太多,访问超时,所以设置了下服务器的超时为2000秒,也不起作 ...

  3. 服务器上解压文件时提示“gzip: stdin: not in gzip format,tar: Child returned status 1,tar: Error is not recovera“

    今天在服务器解压文件时一直在报这个错: 报错原因: 看第一行的提示就是"gzip: stdin: not in gzip format",此时我们需要用file查一下文件的类型,果 ...

  4. nginx优化之请求直接返回json数据

    对于有些服务端接口返回是固定值的json,可通过配置nginx直接返回json,减少程序的加载对资源的占用,减少接口响应时间 location ~* (request/update)$ {      ...

  5. java中使用ajax请求数据格式化,ajax请求服务器返回json数据格式化

    JQuery--实现Ajax应用 实现Ajax应用 1   .load()异步请求数据,通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,调用格式为load(url,[data], ...

  6. linux服务器返回json,Linux 命令行工具解析和格式化输出 JSON的方法

    JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otat ...

  7. 第三节:微信小程序模拟动态加载服务器返回json数据

    上一节虽然完成了新闻的静态展示页面,但是实际开发中,数据通常是请求服务器返回的json数据,这时候就需要页面动态加载显示服务器返回的数据. 在完成的静态页面的代码上,需要做相应的修改,首先需要编写po ...

  8. nodejs从服务器返回静态文件,nodejs静态资源服务器

    nodejs静态资源服务器 内容精选 换一换 WebSdk需要客户结合自身业务需求搭建web服务器并集成sdk使用.自行搭建一个web服务器,将wwwroot下的文件拷贝到web服务器的静态资源目录下 ...

  9. 编写文件服务器,编写服务器的头文件

    编写服务器的头文件 内容精选 换一换 当您的裸金属服务器无法SSH登录时,我们首先建议您通过控制台远程登录.SSH登录失败时,请首先尝试能否通过管理控制台远程登录裸金属服务器.登录管理控制台.选择&q ...

最新文章

  1. debug运行可以,release运行报错的原因及修改方法
  2. python ssh连接_python 建立SSH连接发送指令
  3. 数据结构Java05【二叉树概述、二叉树遍历、堆排序、线索二叉树实现及遍历】
  4. 【语义分割】ICCV21_Self-Regulation for Semantic Segmentation
  5. Acwing 1085. 不要62
  6. Activiti 5.3:子流程(subProcess)
  7. 2010年高教社杯全国大学生数学建模竞赛题目B题解析及层次分析法AHP在其中的应用
  8. ASP.NET状态管理之五(Cookie)
  9. c 打印二叉树_二叉树遍历(非递归和递归实现)
  10. 电子元器件晶体二极管的识别和检测注意事项
  11. 【虹科车用总线技术】PCAN-USB使用手册
  12. 软文发布时标题怎么写,这几点值得注意!
  13. win7 修改html文件图标,如何更改文件图标,教您Win7如何更改图标
  14. StarCraft II Learning Environment
  15. 【成功】qlv转MP4,超简单方法
  16. 前端面试系列-JavaScript作用域和作用域链
  17. 如何让word中代码更优雅美观【图解】【可微调】
  18. 白帽子学习——Metasploit渗透测试指南
  19. DevOps之基础设施
  20. linux网络引导安装windows,pxe启动网络安装CentOS(win平台)

热门文章

  1. 绘制圆角矩形和八角形
  2. 3d建模师不知道那些好看游戏模型背后的秘密?
  3. 用计算机术语赞美老师,关于老师的好句子 关于歌颂老师的句子
  4. 进件(贷前)项目的从0到1
  5. 适合新手的python练习1
  6. 在手机上调试,输出Debug信息到计算机
  7. 功夫大师——中国智能跆拳道训练专家
  8. 代理服务器拒绝连接问题的解决
  9. 小时代2.0虚铜时代.chapter03(一)
  10. android 语音留言功能,iPhone语音留言怎么开通 苹果iOS9.2语音信箱设置教程