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

解決Vue前后端跨域問題的方式匯總

 更新時(shí)間:2022年11月25日 17:22:08   作者:小花皮豬  
這篇文章主要介紹了解決Vue前后端跨域問題的多種方式,本文主要介紹借助解決Vue前后端跨域問題的幾種方式,將會(huì)使用axios進(jìn)行請求需要的朋友可以參考下

1 前言

本文主要介紹借助解決Vue前后端跨域問題的幾種方式

說到ajax請求,就不得不說下xhr(XMLHttpRequest)了,它可以說是鼻祖,但是實(shí)際開發(fā)中,我們不會(huì)直接使用它,而是進(jìn)行二次封裝或者使用成熟的第三方封裝,比如JQuery,axios

本文將會(huì)使用axios進(jìn)行請求

2 axios介紹

既然說到封裝了,那就不得不提到axios了,它和JQuery相比,它支持請求攔截器和響應(yīng)攔截器,并且體積很小,大約是JQuery的四分之一體積,一般在vue項(xiàng)目里面,基本都是使用axios請求

下載axios

想要使用axios,必須先下載它,打開終端,輸入

npm i axios

這個(gè)庫非常的小,安裝很快

引入axios

下載完畢之后,就可以引用了

// 引入axios
import axios from 'axios'

3 模擬場景

基本工作做完后,就可以開發(fā)前后端代碼,模擬跨域場景了

后端接口

后端起一個(gè)服務(wù),端口為9090,有一個(gè)get請求,先訪問下,因?yàn)槭莋et請求,可以直接在瀏覽器訪問,所以說接口是沒問題的

前端請求

有了后端的接口,我們就可以在前端去請求了,上述已經(jīng)安裝好了axios,所以直接編寫代碼請求后端接口,通過控制臺(tái)可以看到,前端的端口是8080

<template>
    <div>
        <button @click="getInfo">獲取信息</button>
    </div>
</template>
<script>
    // 引入axios
    import axios from 'axios'
    export default {
            name:'App', 
            methods:{
                getInfo(){
                    // 使用axios發(fā)送請求(get) 發(fā)送請求后會(huì)有兩個(gè)回調(diào)
                    axios.get('http://localhost:9090/queryUserInfo').then(
                        // 成功回調(diào)
                        success=>{
                            console.log('請求成功!')
                            // 請求成功后的數(shù)據(jù)
                            console.log(success.data)
                        },
                        // 失敗回調(diào)
                        error=>{    
                            console.log('請求失??!')
                            // 請求失敗原因
                            console.log(error.message)
                        }
                    )
                }
            }
        }
</script>

然后發(fā)送請求,發(fā)現(xiàn)控制臺(tái)報(bào)錯(cuò)了,這是一個(gè)很經(jīng)典的跨域問題

4 發(fā)現(xiàn)跨域問題

所謂的跨域請求就是指:當(dāng)前發(fā)起請求的域與該請求指向的資源所在的域不一樣。這里的域指的是這樣的一個(gè)概念:我們認(rèn)為若協(xié)議 + 域名 + 端口號(hào)均相同,那么就是同域。

上面的例子就算因?yàn)榍昂蠖送ㄐ诺亩丝诓灰恢略斐傻目缬騿栴}

常用的解決問題的手段有以下三種

1 cors
2 JSONP
3 代理

我們一一舉例說明

5 解決跨域 cors

這種方式是我工作中處理跨域用到最多也是最簡單的一種方式,直接通過注解解決跨域問題

cors

解決跨域,一般不用于前端做任何事,而是后端或者服務(wù)器去操作,其實(shí)就是在服務(wù)器里面返回相應(yīng)的時(shí)候加幾個(gè)響應(yīng)頭,某種程度上來說,cors解決跨域才是真正意義上的解決跨域,但是在開發(fā)中,這個(gè)響應(yīng)頭不是隨便配置的,如果隨意配置,就會(huì)造成一個(gè)問題就算任何人都能找服務(wù)器要數(shù)據(jù),存在一些安全風(fēng)險(xiǎn)

注解解決跨域

在后端的controller或某個(gè)具體方法上可以加上@CrossOrigin注解解決跨域

加完注解后,這個(gè)時(shí)候重啟后端服務(wù)器再訪問,發(fā)現(xiàn)問題解決

值得注意的是,@CrossOrigin這個(gè)注解默認(rèn)是解決全部路徑的跨域,有時(shí)候一些參數(shù)需要自己設(shè)置,否則可能會(huì)有安全隱患

全局配置跨域

如果使用注解,那么我們需要在每一個(gè)controller或者方法上都要加上注解才能解決跨域的問題

那么有沒有一種一勞永逸的辦法呢?

當(dāng)然有,我們可以使用全局配置跨域,代碼如下:

注意:一定不要忘了使用@Configuration注解配置到項(xiàng)目中,否則無效,具體的一些參數(shù)或者路徑,根據(jù)自身需求設(shè)置即可

package com.wyh.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsMapping implements WebMvcConfigurer {
    @Override
    /**
     * 重新跨域支持方法
     * CorsRegistry  開啟跨域注冊
     */
    public void addCorsMappings(CorsRegistry registry) {
        //addMapping 添加可跨域的請求地址
        registry.addMapping("/**")
                //設(shè)置跨域 域名權(quán)限 規(guī)定由某一個(gè)指定的域名+端口能訪問跨域項(xiàng)目
                .allowedOrigins("*")
                //是否開啟cookie跨域
                .allowCredentials(false)
                //規(guī)定能夠跨域訪問的方法類型
                .allowedMethods("GET","POST","DELETE","PUT","OPTIONS")
                //添加驗(yàn)證頭信息  token
                //.allowedHeaders()
                //預(yù)檢請求存活時(shí)間 在此期間不再次發(fā)送預(yù)檢請求
                .maxAge(3600);
    }
}

以上就是通過cors解決跨域的兩種方式

JSONP

除了使用cors解決跨域,還可以使用JSONP,它解決跨域的方式其實(shí)挺巧妙的,它借助了script標(biāo)簽li的src屬性,在引入外部資源的時(shí)候不受同源策略限制的特點(diǎn)辦到的,雖然JSONP比較巧妙,但是真正開發(fā)中用到的微乎其微,因?yàn)橄胍獙?shí)現(xiàn)JSONP解決跨域,不僅僅要前端人員要用到特殊寫法,后端人員也得配置前端才能實(shí)現(xiàn),并且只能解決get請求跨域問題,相對來說很雞肋

這里就得吐槽一句了,雖然開發(fā)用的少,但是面試就喜歡問你JSONP,就看你知道不知道這個(gè)巧

代理

由于篇幅問題,我另外寫了一篇文章,大家可以參考:Vue項(xiàng)目打包部署到iis服務(wù)器的配置方法

到此這篇關(guān)于解決Vue前后端跨域問題的多種方式的文章就介紹到這了,更多相關(guān)vue前后端跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-cli3打包時(shí)圖片壓縮處理方式

    vue-cli3打包時(shí)圖片壓縮處理方式

    這篇文章主要介紹了vue-cli3打包時(shí)圖片壓縮處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue中v-model如何綁定多循環(huán)表達(dá)式實(shí)戰(zhàn)案例

    vue中v-model如何綁定多循環(huán)表達(dá)式實(shí)戰(zhàn)案例

    v-model綁定的變量無論是對象還是數(shù)組都是綁定的value值,下面這篇文章主要給大家介紹了關(guān)于vue中v-model如何綁定多循環(huán)表達(dá)式的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • vue-cli 關(guān)閉熱更新操作

    vue-cli 關(guān)閉熱更新操作

    這篇文章主要介紹了vue-cli 關(guān)閉熱更新操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證的流程

    Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證的流程

    這篇文章主要介紹了Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證?,Vue.js?和?Django?編寫的前后端項(xiàng)目中,實(shí)現(xiàn)了基于?Token?的身份驗(yàn)證機(jī)制,其他前后端框架的?Token?實(shí)現(xiàn)原理與本文一致,需要的朋友可以參考下
    2022-08-08
  • Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法

    Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法

    本文主要介紹了Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 使用vue-router beforEach實(shí)現(xiàn)判斷用戶登錄跳轉(zhuǎn)路由篩選功能

    使用vue-router beforEach實(shí)現(xiàn)判斷用戶登錄跳轉(zhuǎn)路由篩選功能

    這篇文章主要介紹了vue使用vue-router beforEach實(shí)現(xiàn)判斷用戶登錄跳轉(zhuǎn)路由篩選,本篇文章默認(rèn)您已經(jīng)會(huì)使用 webpack 或者 vue-cli 來進(jìn)行環(huán)境的搭建,并且具有一定的vue基礎(chǔ)。需要的朋友可以參考下
    2018-06-06
  • Vue項(xiàng)目中npm?install卡住問題解決的詳細(xì)指南

    Vue項(xiàng)目中npm?install卡住問題解決的詳細(xì)指南

    這篇文章主要介紹了Vue項(xiàng)目中npm?install卡住問題解決的相關(guān)資料,文中包括更換npm鏡像源、清除npm緩存、刪除.npmrc文件和升級(jí)Node.js版本,需要的朋友可以參考下
    2024-12-12
  • Vue中el-tree樹全部展開或收起的實(shí)現(xiàn)示例

    Vue中el-tree樹全部展開或收起的實(shí)現(xiàn)示例

    本文主要介紹了Vue中el-tree樹全部展開或收起的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Vue3源碼分析reactivity實(shí)現(xiàn)方法示例

    Vue3源碼分析reactivity實(shí)現(xiàn)方法示例

    這篇文章主要為大家介紹了Vue3源碼分析reactivity實(shí)現(xiàn)方法原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • vue實(shí)現(xiàn)分頁的三種效果

    vue實(shí)現(xiàn)分頁的三種效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)分頁的三種效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評(píng)論

饶河县| 博客| 沅陵县| 海丰县| 赤峰市| 淮南市| 渑池县| 尚志市| 扎兰屯市| 鄂州市| 莱阳市| 泰宁县| 义乌市| 启东市| 桂林市| 沧州市| 荔浦县| 绥棱县| 临澧县| 遵义市| 南京市| 含山县| 堆龙德庆县| 元江| 汪清县| 神农架林区| 巫山县| 息烽县| 综艺| 手机| 曲周县| 司法| 安新县| 东港市| 静宁县| 柳河县| 灵武市| 宁远县| 夏邑县| 汾阳市| 凤城市|