safari post请求数据中多了个字段 MIME类型

发布于 2022-09-07 23:06:40 字数 1959 浏览 12 评论 0

safari post请求数据中多了个字段 “MIME类型”,而chrome是正常的

最近在开发中遇到一个奇怪的问题,求助大神们!

项目框架是vue的,请求用的是axios,后台是Java。我在axios上面封装了一层方法,做统一的接口处理,项目里所以请求都是调用这个方法的。axios向后台发送请求时,chrome浏览器是正常的,但是safari浏览器的请求数据中多了个字段 “MIME类型”,但是这个字段我是没有设置的

chrome浏览器是正确的

clipboard.png

safari浏览器时错误的,请求数据会多了一个字段“MIME类型”

clipboard.png


下面是我基于axios封装的请求方法

import qs from 'qs'
import axios from 'axios'
import signature from '../module/signature'

const request = axios.create({
  timeout: 50000,
  withCredentials: true
})

// 添加请求拦截器,POST传参序列化
request.interceptors.request.use(function (config) {
  if (config.method === 'post' || config.method === 'put' || config.method === 'delete') {
    // 序列化
    config.data = qs.stringify(config.data)
  }
  return config
}, function (error) {
  console.log(error)
  return Promise.reject(error.data.msg)
})

// 添加响应拦截器,进行错误处理
request.interceptors.response.use(function (response) {
  let res = response.data
  // 处理错误
  if (res.resultCode !== 200 && res.errorCode !== 0) {
    console.log(res.msg, res.resultCode)
  }
  return Promise.resolve(response.data)
}, function (error) {
  console.log(error)
  if (error.message === 'Network Error') {
    console.log(error.toString())
    return
  }
  return Promise.reject(error)
})

export default async (url, data, method = 'get') => {
  // 记录请求时间
  const timestamps = new Date().getTime()
  // 把请求方式转成小写
  method = method.toLowerCase()

  // 构造请求路径
  let requestUrl = url

  // 请求体
  try {
    let response = await request[method](requestUrl, method === 'post' ? data : { params: data })
    response.request = {
      url,
      data,
      method,
      timestamps
    }
    return Promise.resolve(response)
  } catch (error) {
    return Promise.reject(error)
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文