最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項目打包部署跨域的實現(xiàn)步驟

 更新時間:2023年05月15日 14:29:45   作者:義龍陳序員  
在前端 Vue 項目打包后,如果需要訪問另一個域名下的接口,由于瀏覽器的同源策略限制,會出現(xiàn)跨域問題,本文就介紹一下vue項目打包部署跨域的實現(xiàn)步驟,感興趣的可以了解一下

跨源資源共享(CORS,或通俗地譯為跨域資源共享)是一種基于 HTTP 頭的機制,該機制通過允許服務(wù)器標示除了它自己以外的其他源(域、協(xié)議或端口),使得瀏覽器允許這些源訪問加載自己的資源??缭促Y源共享還通過一種機制來檢查服務(wù)器是否會允許要發(fā)送的真實請求,該機制通過瀏覽器發(fā)起一個到服務(wù)器托管的跨源資源的“預(yù)檢”請求。在預(yù)檢中,瀏覽器發(fā)送的頭中標示有 HTTP 方法和真實請求中會用到的頭??缭?HTTP 請求的一個例子:運行在 https://domain-a.com 的 JavaScript 代碼使用 XMLHttpRequest 來發(fā)起一個到 https://domain-b.com/data.json 的請求(也就是vue的axios,或者JQuery的ajax請求)。

出于安全性,瀏覽器限制腳本內(nèi)發(fā)起的跨源 HTTP 請求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。這意味著使用這些 API 的 Web 應(yīng)用程序只能從加載應(yīng)用程序的同一個域請求 HTTP 資源,除非響應(yīng)報文包含了正確 CORS 響應(yīng)頭。

vue等前端工程在打包部署后,避免不了跨域問題。很讓人抓狂,尤其是新手。其實解決起來也不難。

1.前端工程解決辦法

1.1開發(fā)時候解決辦法

在vue的開發(fā)中可以配置代理,來解決跨域問題,以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項目打包后編譯成靜態(tài)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;
@Configuration
public 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秒內(nèi),不需要再發(fā)送預(yù)檢驗請求,可以緩存該結(jié)果
? ? ? ? ? ? }
? ? ? ? };
? ? }
}

在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;
@Configuration
public 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秒內(nèi),不需要再發(fā)送預(yù)檢驗請求,可以緩存該結(jié)果
? ? }
}

到此這篇關(guān)于vue項目打包部署跨域的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)vue 打包部署跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于vue+canvas的excel-like組件實例詳解

    基于vue+canvas的excel-like組件實例詳解

    a vue component,基于vue的表格組件,主要解決大數(shù)據(jù)量的表格渲染性能問題,使用canvas繪制表格,同時支持類似excel的批量選中,復制黏貼刪除,實時編輯等功能.這篇文章主要介紹了基于vue+canvas的excel-like組件,需要的朋友可以參考下
    2017-11-11
  • swiper/vue 獲取 swiper實例方法詳解

    swiper/vue 獲取 swiper實例方法詳解

    在網(wǎng)上搜了一下如何調(diào)用swiper實例,大部分都是通過 swiperRef = new Swiper(‘.swiper’, options) 這種方法初始化swiper,然后直接能用 swiperRef 實例,這篇文章主要介紹了swiper/vue 獲取 swiper實例方法詳解,需要的朋友可以參考下
    2023-12-12
  • vue-cli3 設(shè)置端口號(81)無效的解決

    vue-cli3 設(shè)置端口號(81)無效的解決

    這篇文章主要介紹了vue-cli3 設(shè)置端口號(81)無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解如何搭建mpvue框架搭配vant組件庫的小程序項目

    詳解如何搭建mpvue框架搭配vant組件庫的小程序項目

    這篇文章主要介紹了詳解如何搭建mpvue框架搭配vant組件庫的小程序項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue+springboot+element+vue-resource實現(xiàn)文件上傳教程

    vue+springboot+element+vue-resource實現(xiàn)文件上傳教程

    這篇文章主要介紹了vue+springboot+element+vue-resource實現(xiàn)文件上傳教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue?Electron實現(xiàn)輸入法自動刷字數(shù)功能詳解

    Vue?Electron實現(xiàn)輸入法自動刷字數(shù)功能詳解

    這篇文章主要介紹了Vue?Electron實現(xiàn)輸入法自動刷字數(shù)功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • vue3使用自定義指令實現(xiàn)el dialog拖拽功能示例詳解

    vue3使用自定義指令實現(xiàn)el dialog拖拽功能示例詳解

    這篇文章主要為大家介紹了vue3使用自定義指令實現(xiàn)el dialog拖拽功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 解決elementUI 切換tab后 el_table 固定列下方多了一條線問題

    解決elementUI 切換tab后 el_table 固定列下方多了一條線問題

    這篇文章主要介紹了解決elementUI 切換tab后 el_table 固定列下方多了一條線問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue項目中常見問題及解決方案(推薦)

    vue項目中常見問題及解決方案(推薦)

    這篇文章主要介紹了vue項目中常見問題及解決方案,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 詳解從Vue-router到html5的pushState

    詳解從Vue-router到html5的pushState

    這篇文章主要介紹了詳解從Vue-router到html5的pushState,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論

名山县| 平果县| 双牌县| 胶南市| 阿尔山市| 安康市| 竹北市| 乐昌市| 阿拉尔市| 阜新| 灵宝市| 都安| 营山县| 阿瓦提县| 新竹市| 沁源县| 侯马市| 广州市| 武城县| 团风县| 潢川县| 惠安县| 通河县| 浑源县| 台东市| 景东| 嘉峪关市| 集贤县| 玉门市| 鲜城| 沂水县| 峨山| 乡城县| 砀山县| 思茅市| 铜山县| 宝兴县| 永登县| 许昌市| 北海市| 通辽市|