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

springboot如何實(shí)現(xiàn)前后端分離跨域訪問(wèn)

 更新時(shí)間:2023年12月15日 09:37:42   作者:古甲哈醒  
這篇文章主要介紹了springboot如何實(shí)現(xiàn)前后端分離跨域訪問(wèn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在springboot項(xiàng)目中,前端html頁(yè)面和后端api接口是分離的,實(shí)際項(xiàng)目部署的時(shí)候也是分開(kāi)部署的。

這樣由于IP不同或者端口不同,就存在跨域問(wèn)題,導(dǎo)致html無(wú)法調(diào)用api。

為解決此問(wèn)題,實(shí)際項(xiàng)目部署的時(shí)候一般有三種解決方案:

(1)使用Nginx反向代理

使用Nginx反向代理,根據(jù)訪問(wèn)路徑進(jìn)行攔截,如果是html則指向靜態(tài)頁(yè),如果是api,則把請(qǐng)求跳轉(zhuǎn)到api的訪問(wèn)地址。

一般這是大部分項(xiàng)目推薦使用的部署方式。

具體Nginx配置如下:

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    #前端頁(yè)面服務(wù)器
    server {
        #監(jiān)聽(tīng)端口和域名
        listen       8080; 
        server_name  localhost;

        #添加頭部信息
        proxy_set_header Cookie $http_cookie;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        #攔截api接口訪問(wèn)
        location /api/ {              
               proxy_pass http://localhost:8080/;  #注意:使用代理地址時(shí)末尾記得加上斜杠"/"。      
        }
        
        #攔截靜態(tài)頁(yè)html
        location / {
               root   html/www;  #注意:使用"/"攔截全路徑的時(shí)候記得放在最后。
               index  index.html index.htm;  #index表示首頁(yè) 
        }           
        
    }
}

(2)將api和html部署在同一個(gè)tomcat

由于跨域是IP和端口不同導(dǎo)致的,那么將html和api部署在同一個(gè)tomcat中,就不存在跨域問(wèn)題。

只需將springboot項(xiàng)目打成war包和html部署在一就行,簡(jiǎn)單方便。

這種方式只適合小型項(xiàng)目,一般不推薦。

(3)在springboot代碼層面允許跨域

在springboot項(xiàng)目代碼層面加入支持跨域配置,也可實(shí)現(xiàn)跨域訪問(wèn)。

這種方式適合開(kāi)發(fā)調(diào)試階段使用。

一般都要求邊開(kāi)發(fā)邊調(diào)試,我就是與前端人員進(jìn)行同步開(kāi)發(fā)調(diào)試,在代碼層面開(kāi)啟跨域訪問(wèn),開(kāi)發(fā)調(diào)試起來(lái)非常方便。

springboot開(kāi)啟跨域支持非常簡(jiǎn)單,只需要在啟動(dòng)類(lèi)中配置WebMvcConfigurer,并重寫(xiě)addCorsMappings方法即可。

@Configuration
public class MyMvcConfig {

    @Bean
    public WebMvcConfigurer  webMvcConfigurer(){
        return new WebMvcConfigurer() {

            //配置跨域
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")     //允許的路徑
                        .allowedMethods("*")     //允許的方法
                        .allowedOrigins("*")       //允許的網(wǎng)站
                        .allowedHeaders("*")     //允許的請(qǐng)求頭
                        .allowCredentials(true)
                        .maxAge(3600);
            }
}

總結(jié)

以上三種方式均可解決跨域問(wèn)題。

  • 方法1是推薦的部署方式;
  • 方法2是適合小項(xiàng)目;
  • 方法3是推薦開(kāi)發(fā)調(diào)試階段使用

好了,這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

莱阳市| 白沙| 大渡口区| 新晃| 荔波县| 呼和浩特市| 泾源县| 荥经县| 长治县| 济宁市| 清原| 安乡县| 万山特区| 长春市| 宝应县| 义乌市| 南昌县| 德州市| 鹤庆县| 小金县| 辰溪县| 东山县| 中江县| 治县。| 张家界市| 钟山县| 柯坪县| 磐石市| 盐池县| 临武县| 米脂县| 庆阳市| 托克逊县| 汶川县| 克什克腾旗| 太仆寺旗| 乐都县| 大竹县| 额济纳旗| 类乌齐县| 遂昌县|