Vue+axios状态返回200,但是没有数据,提示Access-Control-Allow-Origin的问题

解决Vue中axios请求接口返回200但是无数据的问题-0711记

准备工作

1、安装axios
2、在src文件夹建一个util的文件夹,文件夹下新建api.js

代码

第一步:在config文件夹下的index.js中找到dev,在dev中配置proxyTable内容

proxyTable: {
      '/api': {
        target: '接口域名,http://*******',
        changeOrigin: true,
        pathRewrite: {'^/api': ''}
      }
    }

第二步:api.js中封装好接口

import axios from 'axios'

var qs = require('qs')
var instance = axios.create({
  headers: {
    'content-type': 'application/x-www-from-urlencoded'
  }
})

export const ArtcaList = params => {
  return instance.post('/api' + '/apiList/3', qs.stringify(params)).then(res => res.data)
}

第三步:页面调用接口

import {ArtcaList} from '../util/api.js'
export default{
  name: 'ProductList',
  data () {
    return {}
  },
  created () {
    this.getArtcaList()
  },
  methods: {
    getArtcaList () {
      ArtcaList().then(result => {
        console.log(result)
        if (result.code === 0) {
          return false
        }
        if (result.length > 0) {
          console.log(result.data)
        }
      })
    }
  }
}

OK,测试通过,完

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中使用axios处理跨域时,通常需要在后端服务器配置`Access-Control-Allow-Origin`响应头来允许特定的客户端访问。在发送预检请求(preflight request)时,如果`Access-Control-Allow-Headers`不包含`content-type`,会报如你所描述的错误。以下是设置这个字段的基本步骤: 1. **后端设置**: - 在服务器端处理API请求时,检查`OPTIONS`请求(预检请求)。这通常是`XMLHttpRequest`在实际`GET`, `POST`等请求之前发送的一个HTTP头请求,用于检查服务器是否支持跨域。 ```javascript // Node.js后端示例(Express) app.all('/api/*', function(req, res, next) { if (req.method === 'OPTIONS') { res.header('Access-Control-Allow-Origin', req.headers.origin); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.header('Access-Control-Allow-Headers', 'content-type, authorization'); res.status(204).send(); } else { next(); } }); ``` 这里设置了`Access-Control-Allow-Origin`为请求头中的`Origin`字段,以及允许的请求方法和`content-type`头部。 2. **前端配置**: - 在Vue3中使用axios时,确保你设置`withCredentials`属性为`true`,表示请求携带身份凭证(如cookies)。 ```javascript import axios from 'axios'; const service = axios.create({ baseURL: 'http://pre.api.jmxy.mockuai.com/', // API的基础URL withCredentials: true, // 允许跨域携带cookie headers: { 'Content-Type': 'application/json' // 根据实际需要设置请求头 } }); // 使用service实例发起请求 service.get('/your-endpoint') .then(response => console.log(response.data)) .catch(error => console.error(error)); ``` 确保你的后端已经正确处理了这些配置,否则前端仍然会收到跨域错误。如果你的服务器配置为不允许`*`作为`Access-Control-Allow-Origin`,那么你需要将`http://pre.promotion.jmxy.moc...`替换为你实际应用的域名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值