91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue項目打包部署跨域怎么實現

發布時間:2023-06-20 11:12:22 來源:億速云 閱讀:132 作者:栢白 欄目:開發技術

本篇文章和大家了解一下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;
@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秒內,不需要再發送預檢驗請求,可以緩存該結果
            }
        };
    }
}

在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秒內,不需要再發送預檢驗請求,可以緩存該結果
    }
}

以上就是vue項目打包部署跨域怎么實現的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临湘市| 汉川市| 日照市| 小金县| 塘沽区| 许昌市| 乌拉特后旗| 铁岭县| 灌阳县| 康平县| 木兰县| 隆子县| 乌拉特后旗| 麻阳| 井冈山市| 永和县| 泗洪县| 钟山县| 昌宁县| 平遥县| 霸州市| 阿鲁科尔沁旗| 大理市| 大港区| 满洲里市| 乾安县| 图木舒克市| 乌审旗| 泽普县| 湄潭县| 临颍县| 贡山| 桑日县| 台前县| 新晃| 安乡县| 成安县| 隆德县| 洪泽县| 梅州市| 乌恰县|