请求后端接口时,出现302重定向,请问怎么可以解决吗

是一个vue+elemen-ui项目,前端在获取接口时,出现了302重定向问题,以下就是出现这种情况network的截图。
image.png
image.png

以下是三个文件的代码,分别是vue.config.js文件,axios.js和request.js文件。可能有点冗长,这样为了快点找出问题所在。除了这三个,还有main.js以及组件中写这个方法的代码为pose出来。
这是vue.config.js文件代码

const webpack = require('webpack')
const ips = require('./public/config')

module.exports = {
  // publicName = ips.projectName,
  lintOnSave: false,
  configureWebpack: {
    //支持jquery
    plugins: [
      new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery",
        "windows.jQuery": "jquery"
      })
    ]
  },
  // 跨域问题
devServer: {
  open: true, // 自动打开浏览器
  // 修复使用hostname访问,就会显示invalid host header。
  disableHostCheck: true,
  //配置跨域
    proxy:{
      '/':{
          //这里后台的地址,
         //****涉及一些不能展示 target:'http://192.168.1.54:8080/******/',
          // 如果要代理websockets
          ws: true,
          //允许跨域
          changeOrigin:true,
          pathRewrite:{
            // 使用 `/api` 代替 `target` 要访问的跨域的域名
            '^/':''
          }
      }
    }
  
    }
}

request.js代码

import http from "./axios.js"

export const apiPost = (url,data) => {
  return http({
    baseURL:url,
    method:'post',
    // data: data ? encryptParam(data) : data
  });
};

export const api = (url) => {
  return http({
    url: url,//接口
    method: "post",
  });
};

axios.js请求文件

// 引入axios
import axios from 'axios'
//qs库编码数据
import qs from 'qs';
import { Message } from "element-ui";
import store from '../src/store/index.js';

axios.defaults.baseURL = '/api';


// 自定义一个Axios实例化对象
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  // baseURL:process.env.BASE_URL,
  baseURL:'/api',
  // 超时
  timeout:50000,
  // 设置跨域 Cookie
  withCredentials: true,
});

// request拦截器
service.interceptors.request.use( config => {

    if (config.method === 'post') {
      let curPost = config.baseURL.split("/")[config.baseURL.split("/").length - 1];
      // console.log("curPost")
      console.log(curPost)
        if (curPost === "uploadpicture" || curPost === "fileUpload"|| curPost === "upload.do") {
          return config; // 这里对上传文件/图片的 api 不做传参序列化处理
        } else {
          config.data = qs.stringify(config.data);
          if(store.getters.getSessionId != undefined) {
            config.headers = {
              // "Content-type": "application/json;charset=UTF-8",
              "Content-type": "application/x-www-form-urlencoded;charset=UTF-8",
              "token" : store.getters.getSessionId
            };
          }
          // console.log("config")
          console.log(config)
          return config;
        }
    }
      return config;
    },
    (error) => {
      return Promise.reject(error);
    }
);

//liao 添加响应拦截器
service.interceptors.response.use(response => {
  // 接收到响应数据并成功后的一些共有的处理,关闭loading等
  if (response.status === 200) {
    // console.log(response);
    // console.log(response.data);
    if(response.data.isOk == 'O') {
      var dialogFormVisible = true;
      store.commit("setHome", dialogFormVisible);
    }
    return response.data;
  } else {
    console.log(response);
    return Promise.reject();
  }
}, error => {
  /***** 接收到异常响应的处理开始 *****/
  if (error && error.response) {
    // 1.公共错误处理
    // 2.根据响应码具体处理
    switch (error.response.status) {
      case 400:
        error.message = '错误请求';
        break;
      case 401:
        error.message = '未授权,请重新登录';
        break;
      case 403:
        error.message = '拒绝访问';
        break;
      case 404:
        error.message = '请求错误,未找到该资源';
        // window.location.href = "/NotFound";
        break;
      case 405:
        error.message = '请求方法未允许';
        break;
      case 408:
        error.message = '请求超时';
        break;
      case 500:
        error.message = '服务器端出错';
        break;
      case 501:
        error.message = '网络未实现';
        break;
      case 502:
        error.message = '网络错误';
        break;
      case 503:
        error.message = '服务不可用';
        break;
      case 504:
        error.message = '网络超时';
        break;
      case 505:
        error.message = 'http版本不支持该请求';
        break;
      default:
        error.message = `连接错误${error.response.status}`
    }
  } else {
    // 超时处理
    if (qs.stringify(error).includes('timeout')) {
      // var dialogFormVisible = true;
      // store.commit("setDialogFormVisible", dialogFormVisible);
      console.log(error);
      Message.error('服务器响应超时,请刷新当前页');
    }
    // error.message('连接服务器失败')
    // error.message = '连接服务器失败'
  }
  Message.error(error.message);
  /***** 处理结束 *****/
  //如果不需要错误处理,以上的处理过程都可省略
  return Promise.resolve(error.response)
})

export default service
阅读 15.2k
1 个回答

这个可能是后台的问题,可能被拦截了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题