我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue项目打包部署跨域怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue项目打包部署跨域怎么实现

本篇文章和大家了解一下vue项目打包部署跨域怎么实现。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。跨源 HTTP 请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求(也就是vue的axios,或者JQuery的ajax请求)。

出于安全性,浏览器限制脚本内发起的跨源 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。

vue等前端工程在打包部署后,避免不了跨域问题。很让人抓狂,尤其是新手。其实解决起来也不难。

1.前端工程解决办法

1.1开发时候解决办法

在vue的开发中可以配置代理,来解决跨域问题,以vue3的vite为例:
比如我们的后端接口地址前缀为:http://192.168.1.2/api/v1/,在vite中就可以这样配置代理:

# 跨域代理,您可以配置多个 ,请注意,没有换行符VITE_PROXY = [["/api/v1","http://192.168.1.2/api/v1"]]#接口地址(程序中使用的地址)VITE_API_URL=/api/v1

1.2打包部署后解决办法

vue项目打包后编译成静态js了,vite的代理就不能用了,一般我们都是用nginx来直接部署打包后的程序,我们就可以在nginx中配置反向代理来解决:

server{listen 80;server_name localhost;index    index.html index.htm;root   /var/www/dist;error_log   logs/localhost_error.log crit;access_log  logs/localhost_access.log  access;# 接口地址反代    location /api/v1/ {    proxy_pass http://192.168.1.2/api/v1/;    proxy_redirect off;    proxy_set_header HOST $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_set_header X-Forwarded-Proto  $scheme;}rewrite ^(.*)\;(.*)$ $1 last;location ~* \.(eot|ttf|woff|woff2|svg|otf|html|htm|pdf|PDF|mp4|MP4)$ {add_header Access-Control-Allow-Origin *;}add_header Access-Control-Allow-Origin *;}

2.后端工程解决办法

也可以在后端工程中配置跨域,在springboot中新建CorsConfig.java配置类,在其中加入如下Bean:

在Spring WebMvc中:

package com.example.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.HttpHeaders;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class CorsConfig implements WebMvcConfigurer {    @Bean    public WebMvcConfigurer corsConfigurer() {        return new WebMvcConfigurer() {            @Override            public void addCorsMappings(CorsRegistry registry) {                registry.addMapping("/**")                    .allowedOriginPatterns("*") //允许跨域的域名,可以用*表示允许任何域名使用                    .allowedMethods("*") //允许任何方法(post、get等)                    .allowedHeaders("*") //允许任何请求头                    .allowCredentials(true) //带上cookie信息                    .exposedHeaders(HttpHeaders.SET_COOKIE)                    .maxAge(3600L); //maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果            }        };    }}

在Spring WebFlux中:

package com.example.config;import org.springframework.boot.autoconfigure.AutoConfigureOrder;import org.springframework.context.annotation.Configuration;import org.springframework.core.Ordered;import org.springframework.http.HttpHeaders;import org.springframework.web.reactive.config.CorsRegistry;import org.springframework.web.reactive.config.EnableWebFlux;import org.springframework.web.reactive.config.WebFluxConfigurer;@Configurationpublic class CorsConfig implements WebFluxConfigurer {    @Override    public void addCorsMappings(CorsRegistry registry) {       registry.addMapping("/**")                    .allowedOriginPatterns("*") //允许跨域的域名,可以用*表示允许任何域名使用                    .allowedMethods("*") //允许任何方法(post、get等)                    .allowedHeaders("*") //允许任何请求头                    .allowCredentials(true) //带上cookie信息                    .exposedHeaders(HttpHeaders.SET_COOKIE)                    .maxAge(3600L); //maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果    }}

以上就是vue项目打包部署跨域怎么实现的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网行业资讯频道哦!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue项目打包部署跨域怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue项目打包部署跨域怎么实现

本篇文章和大家了解一下vue项目打包部署跨域怎么实现。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的
2023-07-06

vue项目打包部署跨域的实现步骤

在前端Vue项目打包后,如果需要访问另一个域名下的接口,由于浏览器的同源策略限制,会出现跨域问题,本文就介绍一下vue项目打包部署跨域的实现步骤,感兴趣的可以了解一下
2023-05-20

vue项目部署跨域问题怎么解决

这篇文章主要介绍“vue项目部署跨域问题怎么解决”,在日常操作中,相信很多人在vue项目部署跨域问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目部署跨域问题怎么解决”的疑惑有所帮助!接下来
2023-06-30

Vue项目怎么打包部署到GitHub Pages中

本篇内容介绍了“Vue项目怎么打包部署到GitHub Pages中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前期准备编译调试通过的Vue
2023-06-30

Vue中的项目打包及部署全流程

这篇文章主要介绍了Vue中的项目打包及部署全流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

Vue项目打包部署全过程(history模式)

vue项目中我们比较常用的模式为hash和history模式,下面这篇文章主要给大家介绍了关于Vue项目打包部署的全过程,讲解的是vue-router中history模式的部署,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
2023-05-18

idea怎么快速实现将SpringBoot项目打包Docker镜像并部署

这篇文章主要介绍了idea怎么快速实现将SpringBoot项目打包Docker镜像并部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇idea怎么快速实现将SpringBoot项目打包Docker镜像并部署文
2023-06-30

Linux下怎么部署vue项目

本文小编为大家详细介绍“Linux下怎么部署vue项目”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux下怎么部署vue项目”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.部署Nginx请参考Linux
2023-06-28

centos7中怎么部署vue项目

要在CentOS 7上部署Vue项目,您需要先确保已经安装了Node.js和npm。然后按照以下步骤操作:在CentOS 7上安装Node.js和npm:sudo yum install nodejssudo yum install np
centos7中怎么部署vue项目
2024-03-07

Ubuntu中怎么部署vue项目

这篇文章主要介绍“Ubuntu中怎么部署vue项目”,在日常操作中,相信很多人在Ubuntu中怎么部署vue项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ubuntu中怎么部署vue项目”的疑惑有所帮助!
2023-07-04

vue项目打包部署后默认路由不正确怎么解决

本篇内容介绍了“vue项目打包部署后默认路由不正确怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!打包部署后默认路由不正确问题描述vu
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录