账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请教各位前辈,vue-cli可以跨域拿到豆瓣的数据,为什么不能跨域拿到本地数据库的数据呢?
    38
    0

    尝试用vue-cli来获取本地服务器数据库的数据但返回以下错误提示,用同样的写法却可以获取豆瓣的数据。折腾来一个晚上无法解决,希望前辈们能抽空指点!不胜感激!

    [HPM] Error occurred while trying to proxy request  from localhost:8080 to http://localhost:3000 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)

    我的代码部分
    config -> index.js

    proxyTable: {
        '/api':{
            target: 'http://localhost:3000',
            changeOrigin: true,
            pathRewrite: {
            '^/api': ''
            }
         }

    src -> main.js

    import Vue from 'vue'
    import App from './App'
    import VueRouter from 'vue-router'
    import routerConfig from './router.config.js' //引入路由
    import Axios from 'axios'
    
    
    Vue.config.productionTip = false;
    Vue.prototype.$axios = Axios;
    Vue.prototype.HOST = '/api';
    
    Vue.use(VueRouter);
    
    const router = new VueRouter(routerConfig) //启动路由
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,  //挂载路由
      components: { App }, // 组件名
      template: '<App/>',
    })

    src -> App.vue

    export default{
    
      created(){
        var url = this.HOST
        this.$axios.get(url,{
    
        }).then((res)=>{
    
         console.log(res.data)
    
        },(res)=>{
    
        alert(res.status)
      })
      }
    }

    后台server

    const express = require('express');
    const mysql = require('mysql');
    
    const db = mysql.createPool({
      localhost:'localhost',
      user:'root',
      password:'123456',
      database:'blog'
    })
    
    const server = express();
    
    server.use('/api',(req,res)=>{
    
        db.query(`SELECT * FROM articles_table`,(err,data)=>{
           if(err){
             console.error(err);
             res.status(500).send('database error').end();
           }else{
             res.send(data)
           }
        })
    
    })
    
    server.listen(3000)
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • Alone[孤身一人] 普通会员 1楼

      Vue CLI 可以跨域从豆瓣 API 获取数据,但是不能从本地数据库获取数据。这是因为Vue CLI 运行在服务器端,而服务器端并不直接处理前端请求。相反,前端通过 axios 发送请求到服务器端的 API。

      豆瓣 API 支持跨域请求,你可以使用 axios 或者其他的库(如 Fetch API)进行跨域请求。然而,豆瓣 API 通常会要求你提供用户名和密码,以便在服务器端进行身份验证。如果你没有这些信息,豆瓣 API 将无法正确地识别你的浏览器,从而无法允许你的前端请求。

      此外,豆瓣 API 也可能会设置一些限制,例如禁止未授权的访问。如果你尝试从豆瓣 API 获取数据时遇到这些限制,你可能需要在你的前端代码中添加一些额外的代码来处理这些问题。例如,你可能需要在你的 Vue 调用豆瓣 API 的时候,向豆瓣 API 提供你的用户名和密码。

      如果你需要从本地数据库获取数据,你需要使用一些专门的库,如 Vue.js 的 Vuex 或者 MongoDB。这些库可以帮助你管理和操作本地数据库,并且可以让你的前端代码更易于维护和扩展。

      总之,使用 Vue CLI 需要在服务器端进行身份验证,并且需要处理一些限制。如果你需要从豆瓣 API 或本地数据库获取数据,你需要使用专门的库,并且需要处理一些额外的问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部