亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

前端和后端解決跨域問題的一些方式詳解

 更新時間:2024年07月12日 09:57:26   作者:石以砥焉,以銳為利  
跨域對于正在學習或者已經(jīng)就業(yè)的前端同學而言,就是老朋友,只要涉及請求,前后端交互,開發(fā)階段等關鍵字,都避不開跨域,這篇文章主要給大家介紹了關于前端和后端解決跨域問題的一些方式,需要的朋友可以參考下

目前很多java web開發(fā)都是采用前后端分離框架進行開發(fā),相比于單體項目容易產(chǎn)生跨域問題。

一、跨域問題CORS

1.什么是跨域問題?

 后端接收到請求并返回結果了,瀏覽器把這個響應攔截了。

2.跨域問題是怎么產(chǎn)生的?

瀏覽器基于同源策略,如果請求的網(wǎng)頁和當前的服務不是同源的,并且發(fā)送的是XHR(XMLHttpRequest)請求,就會產(chǎn)生跨域問題。

同源策略:url中的協(xié)議、域名、端口號任意一個不同就不同源。注意兩個不同的域名指向同一個主機ip也叫不同源。

3.為什么要有同源策略?

CSRF攻擊:借助本地瀏覽器緩存的cookie信息,以當前登陸者的身份模擬發(fā)送請求,完成攻擊者期待的操作。當攻擊者拿到管理員的信息時可能對整個web程序造成重大打擊。

csrf防御:

  • 規(guī)范使用各個請求方法,比如get請求只能檢索信息,不能修改信息。
  • 當用戶訪問站點時生成一個隨機數(shù),并設置成用戶發(fā)送請求時的cookie。用戶提交表單時,要攜帶隨機數(shù)。當csrf攻擊者發(fā)送請求時,由于沒有這個隨機數(shù),所以請求失敗。
  • 在非get請求中增加token并使用攔截器校驗。
  • HTTP頭中有一個Referer字段,這個字段用以標明請求來源于哪個地址,在訪問敏感數(shù)據(jù)時,先檢查referer字段,查看請求來源于哪個地址。如果是本頁面的url就可以訪問,如果是別的網(wǎng)頁的url就禁止訪問。
  • 自定義屬性加到請求頭。通過 XMLHttpRequest 這個類,一次性給所有該類請求加上 csrftoken 這個 HTTP 頭屬性。
  • 客戶端中RequestRodeo 工具通過在客戶和服務器之間充當代理來防止CSRF攻擊
  • 客戶端下載某些插件,對于攔截的請求用戶可以自己設置白名單。

二、解決方法

前端解決方式

1.JSONP方案:(只能解決get請求不能解決post請求)

不受同源策略影響的標簽:img、script、link 、iframe

 通過在前端動態(tài)創(chuàng)建script標簽,指定跨域資源的URL,服務器返回的是一段JavaScript代碼,前端通過回調函數(shù)處理數(shù)據(jù)。

2.vue解決devServer配置

module.exports = {
    devServer: {
        proxy: {
            '/api': { // 請求的代稱,寫在Axios里的BaseUrl
                target: 'http://localhost:8088/spring', // 真實請求URl
                ws: true,
                changeOrigin: true, // 允許跨域
                pathRewrite: { //替換,通配/api的替換成對應字符
                //     /* 重寫路徑,當我們在瀏覽器中看到請求的地址為:http://localhost:8080/api/core/getData/userInfo 時
                //       實際上訪問的地址是:http://localhost:8088/spring/core/getData/userInfo,因為重寫了 /api
                //      */
                    '^/api': '' //當你的接口中沒有/api字眼時,采用這種,直接替換成空即可
                //     '^/api': '/api'   //當你的接口中剛好有/api 時,采用這種方式
                }
            }
        }
    }
}

3.Nginx代理

正向代理:順著請求方向代理,由用戶配置,為用戶代理服務。拿到要訪問的資源。

反向代理:充當響應服務器,對目標服務器提供了請求轉發(fā)的功能。

nginx使用的是反向代理:瀏覽器訪問A服務器,A服務器再將請求發(fā)送到B瀏覽器,拿到內(nèi)容返回給瀏覽器。

下載negix,完成配置

服務器監(jiān)聽80端口,請求帶著“/api”就代理到指定的服務器,也可以配置重寫url。

上面的場景:前端發(fā)送一個api/xxx請求,negix代理對請求做處理。將這個請求代理到后端服務器,并重寫了請求的url。

ssm項目后端表現(xiàn)層解決方案

1.在響應頭中添加屬性

在controller代碼中寫下面這行代碼。

response.addHeader("Access-Control-Allow-Origin","http://127.0.0.1:8081");

springboot項目中,跨域問題后端怎么解決?

CORS:跨域同源共享。在響應頭中設置一些配置。access-control-allow-origin屬性設置

1.在目標方法上添加@CrossOrigin注解

2.添加cors的過濾器統(tǒng)一解決,不用每個方法都加注解

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter(){
        CorsConfiguration corsConfiguration=new CorsConfiguration();
        //允許那些域訪問
        corsConfiguration.addAllowedOrigin("*");
        //允許請求頭字段
        corsConfiguration.addAllowedHeader("*");
        //允許請求的方法
        corsConfiguration.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
        //添加映射路徑
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsFilter(source);
    }
}

3.實現(xiàn)WebMvcConfigurer接口,重寫addCorsMappings方法

   @Override
    public void addCorsMappings(CorsRegistry registry){
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("*")
                .allowCredentials(true)  //是否允許攜帶cookie
                .maxAge(3600) //有效時間
                .allowedHeaders("*");
    }

4.使用代理工具。

總結

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

相關文章

  • Sentinel的熔斷降級、資源規(guī)則詳解與實例

    Sentinel的熔斷降級、資源規(guī)則詳解與實例

    這篇文章主要介紹了Sentinel的熔斷降級、資源規(guī)則詳解與實例,Sentinel是阿里巴巴開源的一款流量控制和熔斷降級的框架,它主要用于保護分布式系統(tǒng)中的服務穩(wěn)定性,Sentinel通過對服務進行流量控制和熔斷降級,可以有效地保護系統(tǒng)的穩(wěn)定性,需要的朋友可以參考下
    2023-09-09
  • Java實現(xiàn)多項式乘法代碼實例

    Java實現(xiàn)多項式乘法代碼實例

    今天小編就為大家分享一篇關于Java實現(xiàn)多項式乘法代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java比較問題詳細分析

    Java比較問題詳細分析

    本篇文章主要給大家講解了Java中比較問題的相關知識,一起參考學習下吧。
    2017-12-12
  • WeakHashMap?和?HashMap?區(qū)別及使用場景

    WeakHashMap?和?HashMap?區(qū)別及使用場景

    這篇文章主要為大家介紹了WeakHashMap?和?HashMap?的區(qū)別是什么以及何時使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Java語言----三種循環(huán)語句的區(qū)別介紹

    Java語言----三種循環(huán)語句的區(qū)別介紹

    下面小編就為大家?guī)硪黄狫ava語言----三種循環(huán)語句的區(qū)別介紹。小編舉得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Spring?Security實現(xiàn)基于RBAC的權限表達式動態(tài)訪問控制的操作方法

    Spring?Security實現(xiàn)基于RBAC的權限表達式動態(tài)訪問控制的操作方法

    這篇文章主要介紹了Spring?Security實現(xiàn)基于RBAC的權限表達式動態(tài)訪問控制,資源權限表達式動態(tài)權限控制在Spring Security也是可以實現(xiàn)的,首先開啟方法級別的注解安全控制,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Mybatis分頁插件PageHelper的分頁原理剖析

    Mybatis分頁插件PageHelper的分頁原理剖析

    這篇文章主要介紹了Mybatis分頁插件PageHelper的分頁原理剖析,PageHelper作為一個啟動器,那么就和其他啟動器加載一樣,先讀取spring.factories文件里面配置的類,轉成Bean加載本系統(tǒng)中,然后執(zhí)行他的前置后置處理方法,完成初始化,需要的朋友可以參考下
    2023-08-08
  • SpringBoot中配置log4j2日志詳解

    SpringBoot中配置log4j2日志詳解

    這篇文章主要介紹了SpringBoot中配置log4j2日志詳解,Apache Log4j2 是對原先的 Log4j 項目的升級版本,參考了 logback 的一些優(yōu)秀的設計,并且修復了一些問題,因此帶來了一些重大的提升,需要的朋友可以參考下
    2023-11-11
  • Java和C的隨機數(shù)(Random)詳解

    Java和C的隨機數(shù)(Random)詳解

    本篇文章主要介紹了Java和C隨機數(shù)(Random),現(xiàn)在分享給大家,也給大家做個參考,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09
  • SpringBoot之控制器的返回值處理方式

    SpringBoot之控制器的返回值處理方式

    這篇文章主要介紹了SpringBoot之控制器的返回值處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論