vue-resource 请求报错 emulateJSON emulateHTTP

vue-resource

yon
Paste_Image.png
**报错信息**
 Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

在mian.js 全局定义

Vue.http.options.emulateHTTP = true;
Vue.http.options.emulateJSON = true;
Paste_Image.png

在使用的时候遇到一个小坑,这个$http请求和jquery的ajax还是有点区别,这里的post的data默认不是以form data的形式,而是request payload。解决起来也很简单:在vue实例中添加headers字段:

http: { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }

后来翻了下vue-resource
的源码,发现有更加简单的做法:

Vue.http.options.emulateJSON = true;

这里只简单介绍下,详细的文档请大家移步这里吧。
vue.js目前还有众多的插件,详情看这里
https://segmentfault.com/a/1190000003968020#articleHeader10

emulateHTTP

emulateHTTP(布尔值)
默认值为:false,当值为true是,用HTTP的POST方式PUT,PATCH,DELETE等请求,并设置请求头字段HTTP_Method_Override为原始请求方法。

如果Web服务器无法处理PUT, PATCH和DELETE这种REST风格的请求,你可以启用enulateHTTP现象。启用该选项后,请求会以普通的POST方法发出,并且HTTP头信息的X-HTTP-Method-Override属性会设置为实际的HTTP方法。

如果服务器无法处理PUT,PATCH和DELETE的请求。可以启用enulateHTTP。
启用之后,请求会以普通的POST方法发出,并且HTTP头信息的X-HTTP-Method-Override属性会设置为实例的HTTP方法

Vue.http.options.emulateHTTP = true;
emulateJSON

emulateJSON(布尔值)
默认值为:false,当值为true并且data为对象时,设置请求头Content-Type的值为application/x-www-form-urlencoded

如果服务器无法处理编码为application/json的请求,可以启用emulateJSON选项。启用之后,请求会以application/x-www-form-urlencoded为MIME type,就像普通的HTML表单一样。

Vue.http.options.emulateJSON = true;
crossOrigin

crossOrigin(布尔值)
默认值为:null,表示是否跨域,如果没有设置该属性,vue-resource内部会判断浏览器当前URL和请求URL是否跨域。

if ( request.crossOrgin === null ) {
    request.corssOrigin = corssOrigin(request);
}
if ( request.corssOrigin ) {
    if ( !xhrCors ) {
        request.client = xdrClient;
    }
    request.enumlateHTTP = false;
}

如果最终crossOrigin为true并且浏览器不支持CORS,即不支持XMLHttpRequest2时,则会使用XDomainRequest来请求。目前XDomainRequest 只有IE8,IE9 浏览器支持用来进行AJAX跨域。
https://segmentfault.com/a/1190000007087934

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,282评论 19 139
  • 由于公司前端人员短缺,这周我和涛哥就来填这个坑了,前端使用的js框架是Vue+Vue-resource+Vue-v...
    郭之源阅读 50,439评论 9 57
  • 本文为转载,原文:Vue学习笔记进阶篇——vue-resource安装及使用 简介 vue-resource是Vu...
    ChainZhang阅读 13,463评论 0 6
  • vue-resource的应用 最近在了解资源的相关加载方式,主要是基于http协议下的资源请求,之前由于用了vu...
    小a草阅读 5,771评论 0 7
  • 今天得知一个不好的消息,外婆摔了一跤,身体状况非常不好,吃不下也没精神,恐怕会很难熬过这关。而外婆怎么会摔跤呢?照...
    maomizone阅读 1,423评论 0 0

友情链接更多精彩内容