[首先查看是否引入数据库文件,如果没有数据库文件,请求后浏览器显示的是跨域问题!先排除数据库文件有没有引入!]

1.打包前的本地localhost:8080环境下可以用 proxyTable代理来解决跨域问题。[配置完成后重启项目服务]

原理:用自定义名如'/api'来代替你请求数据的url地址,proxyTable会自动识别你数据请求url的地址,识别/api字符,然后将/api替换为你想要请求的原网址。

"首先要确定你的vuecli是2还是3、4"


vuecli2:

在config目录的index文件中module.exports 的dev 中加入proxyTable代理。

module.exports = {dev: {// PathsassetsSubDirectory: 'static',assetsPublicPath: '/',// Various Dev Server settingshost: 'localhost', // can be overwritten by process.env.HOSTport: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determinedautoOpenBrowser: false,errorOverlay: true,notifyOnErrors: true,poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-proxyTable: {    //下面两个/api可以改成自己定义的名字'/api': {target: 'http://localhost:9900',  //你的数据请求地址(此处9900为举例)secure: true,    //如果是https,加入这句代码changeOrigin: true,     //同意跨域ws: true,pathRewrite: {'^/api': '',}}},}
}

当你用ajax或者axios时就可以将url中的/api变为proxyTable中target的路径,如:

axios.get({url:'/api/wx/mymessage'  //proxyTable将/api变为http://localhost:9900
}).then(res => {console.log(res)
}).catch(err => {console.log(err)
})

(若已使用axios.create封装,可以在baseURL前面加入/api),配置完成重新npm run dev


vuecli3或4:

在根目录的vue.config.js(没有这个文件可以创建)中加入proxyTable代理。


module.exports ={
devServer: {host: "0.0.0.0",port: 8082, https: false, open: true, proxy: {            //下面两个/api可以换成自己定义的名字'/api': {target: 'http://localhost:9900',  //你的数据请求地址(此处9900为举例)secure: true,    //如果是https,加入这句代码changeOrigin: true,     //同意跨域ws: true,pathRewrite: {'^/api': '',}}}},
}

当你用ajax或者axios时就可以将url中的/api变为proxyTable中target的路径,如:

axios.get({url:'/api/wx/mymessage'  //proxyTable将/api变为http://localhost:9900
}).then(res => {console.log(res)
}).catch(err => {console.log(err)
})

(若已使用axios.create封装,可以在baseURL前面加入/api),配置完成重新npm run start


到此解决了打包前的跨域问题

2.打包后可以用nginx代理来解决跨域问题。

原理:打包后你在代码中配置的proxyTable不会被打包入dist文件中。所以要找一个外部的插件解决跨域问题。与本地环境下的proxyTable相同,nginx作为前端服务器,它的外部跨域插件非常好配置,可以直接下载使用。

nginx就是为打包的dist文件开启一个本地的localhost地址,配置好nginx后要打开nginx开启的localhost地址来运行打包文件,而不是直接打开dist里面的index文件。

下载地址:nginx: download

下载Stable version中的第三个也就是Windows版本就可以了,下载后解压。解压后文件中的exe文件可以直接运行nginx(会弹出一个cmd窗口然后消失,可以打开资源管理器查看服务是否启动)。

在启动服务之前需要配置conf中的nginx.conf文件(配置完后在任务管理器关掉nginx后重新启动)。

打包后根据请求地址不同可以分为以下三种情况:

1、请求数据地址同样为本机开启localhost地址。(一般出现在练习环境下)

2、请求数据地址为项目甲方未配置代理的内网服务器。(一般出现在项目对接环境下)

3、请求数据地址为云服务器。【云服务器的商家一般都给自己的接口解决了跨域问题(直接https或者http请求就可以),一般可以直接请求】

根据1和2情况的不同,nginx也有两种配置方式


1、请求数据地址同样为本机开启的localhost地址。

location /api {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://localhost:8020;换成你的后端接口}放一个方便复制的代码段

再把源代码url:'http://localhost:9966/this/go'改为url:'/api/this/go'就可以了


2、请求数据地址为项目甲方未配置代理的内网服务器。(一般出现在项目对接环境下)

源代码中的请求地址该怎么写就怎么写,此处nginx不起替换作用,只是代理开启服务器。(不用担心这样改动会造成用户也需要配置nginx才能打开网页,这不是你要想的问题,这是服务器需要配置的问题)


总结:vue产生跨域问题不只是前端问题,这个问题在后端也可以加注释块解决,但是后端解决会产生漏洞,增加网站被黑风险。不要认为这是前端或者后台应该做的工作。

最全vue打包前后的跨域问题,绝对解决你的问题相关推荐

  1. vue打包部署axios跨域问题

    工具版本: [vue -V]:2.9.6 ide工具:VSCode / Idea 前提:我们前端vue工程需要单独部署 一.本地使用命令运行跨域问题. 外网访问的地址:https://www.runo ...

  2. vue项目打包部署nginx跨域

    vue项目打包部署nginx跨域 vue项目连接外部api接口时,打包部署到nginx后出现api404,api跨域问题,这个时候需要给vue项目本身进行跨域,再配置nginx中进行跨域即可解决,详见 ...

  3. VUE跨域问题的解决(没有config目录)

    在网上搜索跨域问题的解决,都是需要在config目录下修改index.js,但是我创建的项目没有config目录.参考大佬的文章,得以解决 https://www.cnblogs.com/michea ...

  4. vue如何配置服务器端跨域_客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解...

    本篇博客主要说明: 前后端框架(本例中是vue和koa)如何发送请求?获取响应? 以及跨域问题如何解决? vue部分: import App from './App.vue' import Axios ...

  5. vue php跨域,Vue 项目中遇到的跨域问题及解决方法(后台php)

    问题描述 前端 vue 框架,后台 php,百度跨域问题后台加这段代码 header("Access-Control-Allow-Origin: *"); 加了之后报这个错: Th ...

  6. vue工程本地代码请求http发生跨域提示错误解决方法

    这个可以使用代理进行跨域,这样看来跨域的方法就有几种了,对于iframe中的用postmassage,对于vue工程中的跨域则使用代理模式. 代理模式配置如下: 在config文件夹下找到index. ...

  7. vue : 本地调试跨域问题的解决办法:proxyTable

    vue : 本地调试跨域问题的解决办法:proxyTable 参考文章: (1)vue : 本地调试跨域问题的解决办法:proxyTable (2)https://www.cnblogs.com/fo ...

  8. 如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题

    如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题 参考文章: (1)如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题 (2)https://www.cnblog ...

  9. vue 使用axios 出现跨域请求的两种解决方法

    vue 使用axios 出现跨域请求的两种解决方法 参考文章: (1)vue 使用axios 出现跨域请求的两种解决方法 (2)https://www.cnblogs.com/wangshengli5 ...

最新文章

  1. Shell 条件判断汇总
  2. 不管服不服 Windows仍是全球第一大桌面系统
  3. 数学建模之运筹学问题
  4. 语法分析——自上而下
  5. ios模拟器键盘不弹出
  6. 数据结构学习记录连载1
  7. 廖雪峰js教程笔记11 操作DOM(包含作业)
  8. 微信小程序连接无法跳转/ can not navigate to tabBar page错误
  9. XWPFTemplate生成根据模板文件填充内容生成word文件
  10. Relay继电器和Swicth开关
  11. 用户输入月份,判断这个月是哪个季节
  12. 《易经》里的28条法则与64个大智慧
  13. outlook附件无图标_通过将图标列添加到Outlook 2007待办事项栏中,一目了然地查看任务类型...
  14. 如何将1000页PPT单独导出为1000个单独的文件?又如何快速把多个PPT合成一个?
  15. mysql数据库中吧时分秒换算成秒的函数TIME_TO_SEC()
  16. 华为m2青春版android7,7吋巨屏跨界之作 华为揽阅M2青春版评测
  17. 统信UOS系统桌面回收站图标删除
  18. 苹果电脑上android环境的搭建
  19. Error response from daemon: driver failed programming external connectivity on endpoint dz-redis
  20. C#游戏跨服架构进化之路

热门文章

  1. Python 音频处理:wave
  2. 命令设置Android手机不进入休眠
  3. 将html转为vue,vue将HTML转PDF导出(纯干货)
  4. android手机解锁macbook,用iPhone解锁 Mac原来有这么多方法
  5. Java之文件和base64字符串互转
  6. Matlab中设置横纵轴、图例以及更改横纵轴字体大小
  7. 郑州大学统考英语计算机题库,2017年大学英语统考大纲试题(题型版五)
  8. 红宝书读书笔记 第五章
  9. 啥是佩奇,程序员最懂
  10. 仅需6200美元,高性价比构建3块2080Ti的强大工作站