vue跨域问题的解决 调用别的网站接口实现详情的渲染

跨域问题解决
什么是跨域: 协议 域名/IP 端口 这三个只要有一个不同,就会出现跨域。
json-server默认支持跨域。
但是在公司开发中,因为绝大多数都是前后盾分离的方式进行开发,在开发阶段进行接口调试的时候,肯定会出现跨域问题。怎么解决呢? 使用代理。

代理:反向代理和正向代理。
正向代理:会隐藏了真实的【请求客户端】,服务端不知道真实的客户端是谁。客户端请求的服务都被【代理服务器】代替来请求了。

在vue.config.js中配置代理的方式,只能在开发阶段使用
实例
vue.config.js

module.exports = {
    //开发服务配置
    devServer:{
        //代理配置
        proxy:{
             //当我们的请求地址中有/api这个路径的时候,就会触发代理机制
             "/api":{
                 //我们要代理的地址。  将要代理的域名写在这里
                 target:"https://blog.youkuaiyun.com",
                 //是否跨域 需要设置此值为true 才可以让本地服务器代理我们发出的请求。
                  changeOrigin:true,

             },
              //http://localhost:8080/api/articles?type=more&category=web&shown_offset=1642476871467179 因为这个地址中有/api,所以触发代理,会将本地域名修改为代理的域名。
              // =》 http://localhost:8080 =》https://blog.youkuaiyun.com
        }
    }
}

main.js

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
//导入axios
import axios from "axios";
//导入vue-axios插件
import VueAxios from "vue-axios";

Vue.config.productionTip = false;

axios.defaults.baseURL = "http://localhost:3000";

//想要在组件中使用axios,可以将导入的axios绑定到Vue的原型链上。
// Vue.prototype.$axios = axios;

//安装(注册)插件   //每一个插件都有install方法,安装其实就是执行该插件的install方法。
Vue.use(VueAxios, axios);

new Vue({
  router,
  store,
  render: (h) => h(App),
}).$mount("#app");

Home.vue

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png" />
    <br />
    <h1>优快云文章列表</h1>
    <div class="container">
      <p v-for="item in articles" :key="item.id">
        <a :href="item.url">{{ item.title }}</a>
      </p>
    </div>
  </div>
</template>

<script>
/**
 * 跨域问题解决
 * 什么是跨域: 协议 域名/IP 端口  这三个只要有一个不同,就会出现跨域。
 * json-server默认支持跨域。
 * 但是在公司开发中,因为绝大多数都是前后盾分离的方式进行开发,在开发阶段进行接口调试的时候,肯定会出现跨域问题。怎么解决呢? 使用代理。
 *
 * 代理:反向代理和正向代理。
 * 正向代理:会隐藏了真实的【请求客户端】,服务端不知道真实的客户端是谁。客户端请求的服务都被【代理服务器】代替来请求了。
 *
 * 在vue.config.js中配置代理的方式,只能在开发阶段使用。
 */
export default {
  name: "Home",
  data() {
    return {
      articles: [],
    };
  },
  components: {
    // HelloWorld,
  },
  methods: {},
  mounted() {
    //发送axios请求,获取数据
   this.axios
        //前面的域名要换成本地的才可以生效
      .get(
         "http://localhost:8080/api/articles?type=more&category=web&shown_offset=1642476871467179"
      )
      .then((resp)=>{
        console.log(resp);
        this.articles = resp.data.articles;
      })
  },
};
</script>

<style scoped>
* {
  font-size: 24px;
}

button {
  margin: 10px;
  display: inline-block;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值