vue项目请求后台接口跨域

news/2024/7/11 0:06:34 标签: vue.js, javascript, es6

proxyTable

vue项目在本地调试中,我们经常用localhost来启动,但是当你请求后台接口时,比如:http://xxx.kkkk.com/,则显示跨域,这里打开config下的index.js文件,dev下面有一个属性proxyTable,配置:

proxyTable: {
	 '/api': {
	     target: 'http://xxx.kkkk.com/',  // 接口域名
	     changeOrigin: true,  //是否跨域
		     pathRewrite: {
		         '^/api': ''   //需要rewrite重写成空字符串,
		     }              
	   }
 },

这样配置以后呢,看后端的接口前缀有没有/api,有的话,你的接口请求前缀就要加上‘/api’,(也可以在上面rewrite重写的时候重写成’/api’,你就不用手动加了):

/room/num/          //  你本来请求的接口
/api/room/num/             // 你配置以后的请求接口

没有就不管了。
如果你封装了公共请求js文件,(如果没有封装,请看这篇博文)则在请求url前面拼接上/api即可:

var base = "/api"
// 发送请求
export function fetchPost (url, params) {
  return new Promise((resolve, reject) => {
    axios
      .post(base + url, params)
      .then(
        res => {
          resolve(res.data)
        },
        err => {
          reject(err.data)
        }
      )
      .catch(err => {
        reject(err.data)
      })
  })
}

这样在页面中请求接口写你原本接口即可,比如:

this.$fetchPost('/room/num', obj).then(res => {
 
 })

这样写是和打包上线没有关系的,仅仅是你在调试测试的时候。

nginx

这样跨域的问题就解决了,还有一种办法就是用nginx代理,配置本地监听的端口和域名的时候,写成localhost:

server {
    listen 9003;         // 随便写一个没被占用的
    server_name localhost;       //  项目打开地址(和后端协调一致)

	
 location /static/{
    rewrite ^/static/(.*)$ /$1 break;
    proxy_pass  http://192.168.1.51:8088;        // vue项目启动地址
   }
   
   location ~ .*\..*{
    proxy_pass   http://192.168.1.51:8088;        // vue项目启动地址
   }
   
   
	location /{
		proxy_pass  http://xxxxxx.aaa.dddd.cn;   // 后台请求接口地址
   }  
}

这样配置好,调试项目前,启动项目,启动nginx,然后在浏览器打开:localhost:9003,即可调试项目。


http://www.niftyadmin.cn/n/1845586.html

相关文章

STM32F4xx那点事(一)——“No Target Connected”解决方法

今天自己做的STM32F405RG的板子回来了,其实就是一个最小系统,只使用普通的IO口做测试,使用一部分I/O作为数据的输入,一部分I/O作为数据的输出。程序则使用自己前几天根据项目需要在MDK4.74上编写的,程序编译完成之后&a…

Flutter —布局系统概述

老孟导读:此篇文章非常详细的讲解了 Flutter 布局系统的工作原理。 翻译自:https://itnext.io/flutter-layout-system-overview-c70bbe9ba909?sourcebookmarks---------17------------------ 最近,我决定专注于Flutter基础知识。这次&#x…

javascript监听普通dom容器的大小样式

像onresize这种事件,都是挂载在全局对象Window下的: window.addEventListener("resize",function(){})但是现在需求是,改变某个dom容器比如.box的大小,触发某个事件: MutationObserver接口提供了监视对DOM树…

Powerdesigner提示打印错误

为什么80%的码农都做不了架构师?>>> 问题:使用Powerdesigner提示打印错误 解决办法:启动 Print Spooler服务就好了 转载于:https://my.oschina.net/ecp/blog/635360

ES6中变量声明const不可修改?

答案当然是:不是。这个问题曾经让我尴尬,这是w3cschool对let、const的解读 const命令 1,const声明一个只读的常量。一旦声明,常量的值就不能改变。 const PI 3.1415; PI // 3.1415PI 3; // TypeError: Assignment to constan…

centos 7 JDK 环境部署

1.1 系统环境:[rootnginx-daili tools]# cat/etc/redhat-releaseCentOS Linux release 7.0.1406 (Core)[rootnginx-daili tools]# uname -r3.10.0-123.el7.x86_64[rootnginx-daili tools]# uname -nnginx-daili[rootnginx-daili tools]# uname -mx86_641.2 下载JD…

【Flutter 实战】全局点击空白处隐藏键盘

老孟导读:为什么要实现点击空白处隐藏键盘?因为这是 iOS 平台的默认行为,Android 平台由于其弹出的键盘右上角默认带有关闭键盘的按钮,所以点击空白处不会隐藏键盘。 对于单个页面来说,通过为 TextField 添加 focusNod…

Chrome安装vue-devTools调试-终极版

大家都说去什么官网github上下载,完了先npm install ,再npm run build,再修改一个文件,事实上,你去运行就发现一堆问题,这里出一个终极版文件: 资源:https://download.csdn.net/dow…