关于vue-resource报错450的解决方案

发布时间 - 2026-01-11 02:29:45    点击率:

本文介绍了关于vue-resource报错450的解决方案,分享给大家,具体如下:

一、基本使用:

1.页面引入

 import vueResource from 'vue-resource'
 Vue.use(vueResource)

2. 调取接口

Vue.http.post(url, {
 'data1': data1,
 'data2': 'data2'
}).then(response => {
 console.log('success', response)
}, response => {
 console.log('error', response)
})

二、报错450

定位错误信息:请求header没有完全一一对应。Content-Type: application/x-www-form-urlencoded; charset=UTF-8应为Content-Type: application/json; charset=UTF-8,检查页面代码,发现已经设置了

Vue.http.interceptors.push(function (request, next) {
 request.headers.set('Content-Type', 'application/json; charset=UTF-8')
 request.headers.set('Content-Type', 'application/json')
 next()
})

只是页面没有起作用而已,那究竟是什么原因导致页面设置的Content-Type失效了呢?继续追溯,发现跟这行代码有关

 // Vue.http.options.crossOrigin = true 
 // Vue.http.options.emulateHTTP = true
 Vue.http.options.emulateJSON = true //(跟这行代码有关)

三、分析

下面分别来讲一下这几行代码的用处,以及emulateJSON是怎么影响到Content-Type设置的。

1. Vue.http.options.crossOrigin

这个很明显是设置跨域的,此处不多讲。

2. Vue.http.options.emulateHTTP

参考地址:https://github.com/pagekit/vue-resource/blob/develop/src/http/interceptor/method.js

摘出源码

/**
 * HTTP method override Interceptor.
 */

export default function (request, next) {

  if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {
    request.headers.set('X-HTTP-Method-Override', request.method);
    request.method = 'POST';
  }

  next();
}

大概的意思就是如果请求方式为PUT|PATCH|DELETE,服务器又没法处理这几类请求的时候,设置Vue.http.options.emulateHTTP = true的话可以将X-HTTP-Method-Override设置为PUT|PATCH|DELETE,然后使用普通的post进行请求。

关于X-HTTP-Method-Override讲一下,它的使用场景是:

在某些HTTP代理不支持类似PUT|PATCH|DELETE这些类型HTTP请求的情况下,可以通过另一种完全违背协议的HTTP方法来"代理"。这种协议就是,使客户端发出HTTP POST请求并设置header里X-HTTP-Method-Override值为PUT|PATCH|DELETE。

3. Vue.http.options.emulateJSON

参考地址:https://github.com/pagekit/vue-resource/blob/develop/src/http/interceptor/form.js

摘出源码

/**
 * Form data Interceptor.
 */

import Url from '../../url/index';
import { isObject, isFormData } from '../../util';

export default function (request, next) {

  if (isFormData(request.body)) {

    request.headers.delete('Content-Type');

  } else if (isObject(request.body) && request.emulateJSON) {

    request.body = Url.params(request.body);
    request.headers.set('Content-Type', 'application/x-www-form-urlencoded');
  }

  next();
}

从第17行可以看到,如果设置了emulateJSON的话会默认加上这句

request.headers.set('Content-Type', 'application/x-www-form-urlencoded');

这就是为什么我们设置的Content-Type失效了。只要去掉Vue.http.options.emulateHTTP = true 或者直接置为false就可以了。

vue-resource(github)地址:https://github.com/pagekit/vue-resource

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # resource  # 450错误  # resource错误处理  # resource报错450  # 详解vue-Resource(与后端数据交互)  # 谈谈Vue.js——vue-resource全攻略  # Vue2学习笔记之请求数据交互vue-resource  # Vue-resource实现ajax请求和跨域请求示例  # 详解vue与后端数据交互(ajax):vue-resource  # vue-resource 拦截器使用详解  # 详解vue 配合vue-resource调用接口获取数据  # Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用  # 详解vue-resource promise兼容性问题  # 详解vue前后台数据交互vue-resource文档  # 报错  # 这行  # 这就是  # 是怎么  # 不多  # 可以通过  # 给大家  # 可以看到  # 不支持  # 影响到  # 很明显  # 设置为  # 错误信息  # 又没  # 这句  # 方法来  # 值为  # 大家多多  # 就可以  # 客户端 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用y主机助手快速搭建网站?  如何在宝塔面板创建新站点?  如何用腾讯建站主机快速创建免费网站?  制作公司内部网站有哪些,内网如何建网站?  如何快速搭建高效WAP手机网站?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何快速搭建高效可靠的建站解决方案?  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  JS中对数组元素进行增删改移的方法总结  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  网站制作壁纸教程视频,电脑壁纸网站?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  网站建设要注意的标准 促进网站用户好感度!  教你用AI润色文章,让你的文字表达更专业  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何实现javascript表单验证_正则表达式有哪些实用技巧  清除minerd进程的简单方法  如何选择可靠的免备案建站服务器?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel如何配置任务调度?(Cron Job示例)  网页设计与网站制作内容,怎样注册网站?  使用C语言编写圣诞表白程序  如何快速打造个性化非模板自助建站?  Laravel如何配置Horizon来管理队列?(安装和使用)  如何在万网自助建站平台快速创建网站?  Laravel怎么实现模型属性的自动加密  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何在景安云服务器上绑定域名并配置虚拟主机?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何在IIS中新建站点并解决端口绑定冲突?  Laravel Docker环境搭建教程_Laravel Sail使用指南  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  JS实现鼠标移上去显示图片或微信二维码  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  如何打造高效商业网站?建站目的决定转化率  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Python自动化办公教程_ExcelWordPDF批量处理案例