1、跨域问题

js采用的是同源策略,也就是当协议、域名、端口任意一个不相同时,都会产生跨域的问题

2、解决方案

  1. 后台解决

cors,这里不展开描述

  1. 前台解决

proxy

3、测试代码

MyCustomComponent.vue中:

  1. <template>
  2. <div></div>
  3. </template>
  4. <script>
  5. export default {
  6. name: "MyCustomComponent",
  7. mounted() {
  8. // 用全局的$axios进行快捷get请求
  9. this.$axios.get("http://iwenwiki.com/api/FingerUnion/list.php").then(res => {
  10. console.log("--------快捷get请求--------");
  11. console.log(res.data);
  12. }, error => {
  13. console.log("--------快捷get请求error--------");
  14. console.log(error);
  15. })
  16. }
  17. }
  18. </script>
  19. <style scoped>
  20. </style>

image.png
在vue.config.js文件下添加devServer的设置即可,如下代码:

  1. const { defineConfig } = require('@vue/cli-service')
  2. module.exports = defineConfig({
  3. transpileDependencies: true,
  4. devServer: {
  5. proxy: {
  6. '/api': {
  7. target: 'http://iwenwiki.com/',
  8. changeOrigin: true
  9. }
  10. }
  11. }
  12. })

MyCustomComponent.vue中此时不需要再用全路径:

  1. <template>
  2. <div></div>
  3. </template>
  4. <script>
  5. export default {
  6. name: "MyCustomComponent",
  7. mounted() {
  8. // 用全局的$axios进行快捷get请求
  9. this.$axios.get("/api/FingerUnion/list.php").then(res => {
  10. console.log("--------快捷get请求--------");
  11. console.log(res.data);
  12. }, error => {
  13. console.log("--------快捷get请求error--------");
  14. console.log(error);
  15. })
  16. }
  17. }
  18. </script>
  19. <style scoped>
  20. </style>

此时能正确访问到数据了:
image.png