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

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)
  }
}
阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题