国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

跨域介紹及Java中常見的跨域解決方案

這篇具有很好參考價值的文章主要介紹了跨域介紹及Java中常見的跨域解決方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

介紹

跨域(Cross-Origin)指的是在瀏覽器中,由于安全策略的限制,當(dāng)前網(wǎng)頁的 JavaScript 代碼無法直接訪問不同源(協(xié)議、域名、端口)的資源。這意味著如果網(wǎng)頁嘗試通過 AJAX、Fetch 或 WebSocket 等方式向不同源的服務(wù)器發(fā)送請求,瀏覽器會阻止這些請求,從而避免潛在的安全風(fēng)險。

產(chǎn)生原因

瀏覽器同源策略(Same-Origin Policy)是一種安全機(jī)制,用于限制從一個源加載的文檔或腳本如何與來自其他源的資源進(jìn)行交互。同源策略的目的是保護(hù)用戶隱私和防止惡意代碼的執(zhí)行。

同源策略要求兩個 URL 的協(xié)議、主機(jī)名和端口號必須完全相同,才被認(rèn)為是同源。如果兩個 URL 的協(xié)議、主機(jī)名或端口號之一不同,就會被視為跨源請求,那么在默認(rèn)情況下,瀏覽器會阻止跨源請求的訪問。

同源策略限制了以下幾個方面的跨源行為:

  1. DOM 訪問限制:跨源的 JavaScript 無法訪問不同源頁面的 DOM 結(jié)構(gòu)。

  2. 數(shù)據(jù)訪問限制:跨源的 JavaScript 無法讀取不同源的數(shù)據(jù),如讀取 Cookies、LocalStorage 或發(fā)送 AJAX 請求。

  3. 腳本執(zhí)行限制:無法加載不同源的 JavaScript 腳本。

為了允許某些跨源行為,瀏覽器提供了一些機(jī)制,如跨域資源共享(CORS)和 JSONP。這些機(jī)制通過特定的頭部字段或動態(tài)創(chuàng)建 script 標(biāo)簽來允許跨源請求。

需要注意的是,同源策略僅在瀏覽器環(huán)境中起作用,對于服務(wù)器端和其他環(huán)境并不適用。服務(wù)器端可以通過其他方式進(jìn)行跨域訪問,如代理服務(wù)器或后端接口配置等。

常見解決方案

跨域限制的原因是瀏覽器的同源策略(Same-Origin Policy),該策略要求網(wǎng)頁只能訪問與其來源相同的資源。但是,有時候我們需要在不同源之間進(jìn)行數(shù)據(jù)交互,這就需要使用跨域解決方案。

  • JSONP(JSON with Padding):通過動態(tài)創(chuàng)建 <script> 標(biāo)簽,將跨域請求數(shù)據(jù)封裝在一個回調(diào)函數(shù)中返回,利用 <script> 標(biāo)簽的跨域特性實現(xiàn)數(shù)據(jù)獲取。
  • CORS(Cross-Origin Resource Sharing):服務(wù)端設(shè)置相應(yīng)的響應(yīng)頭,允許跨域訪問。在服務(wù)端設(shè)置 Access-Control-Allow-Origin 頭部字段,指定允許訪問的域名或通配符 *。
  • 代理服務(wù)器:在同源的服務(wù)器上創(chuàng)建一個接口,將客戶端請求發(fā)送到目標(biāo)服務(wù)器,并將響應(yīng)返回給客戶端。客戶端只與同源的服務(wù)器通信,避免了跨域問題。
  • WebSocket:使用 WebSocket 進(jìn)行雙向通信時,由于 WebSocket 協(xié)議的特殊性,允許跨域通信。

請注意,這些跨域解決方案各有優(yōu)缺點,選擇適合您需求的解決方案取決于具體情況。同時,為了確保安全性,應(yīng)該仔細(xì)考慮跨域請求所帶來的潛在風(fēng)險,并采取適當(dāng)?shù)陌踩胧?/p>

SpringBoot中CORS跨域解決

在 Spring Boot 中解決跨域問題,你可以使用 Spring 提供的 @CrossOrigin 注解或者通過配置 WebMvcConfigurer 來實現(xiàn)。

  1. 使用 @CrossOrigin 注解:
    在你的控制器類或方法上添加 @CrossOrigin 注解,可以指定允許訪問的源、允許的 HTTP 方法、允許的請求頭等。
@RestController
@CrossOrigin(origins = "http://example.com")
public class MyController {
    // ...
}

上面的示例中,允許來自 http://example.com 域名的請求訪問該控制器

  1. 配置 WebMvcConfigurer:
    在你的 Spring Boot 項目中創(chuàng)建一個配置類,實現(xiàn) WebMvcConfigurer 接口,并覆蓋 addCorsMappings 方法,在該方法中配置跨域設(shè)置。

示例:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://example.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*");
    }
}

上面的示例中,配置了允許來自 http://example.com 域名的請求訪問任意路徑,并允許的 HTTP 方法包括 GET、POST、PUT 和 DELETE,允許的請求頭為任意頭部。

  1. 使用 Filter 進(jìn)行跨域設(shè)置:
    創(chuàng)建一個實現(xiàn) javax.servlet.Filter 接口的過濾器類,然后在 doFilter 方法中設(shè)置跨域相關(guān)的響應(yīng)頭。

示例:

public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Access-Control-Allow-Origin", "http://example.com");
        httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        httpResponse.setHeader("Access-Control-Allow-Headers", "*");
        chain.doFilter(request, response);
    }
}

然后在你的 Spring Boot 項目中注冊該過濾器,可以通過配置類或者在 web.xml 文件中配置。

  1. Spring Security 中禁用跨域資源共享(CORS),可以使用以下配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .cors().disable() // 禁用 CORS
            .and()
            // 其他配置項...
    }
}

通過在 configure(HttpSecurity http) 方法中調(diào)用 .cors().disable(),可以禁用 Spring Security 的 CORS 配置。這將允許跨域請求的發(fā)生而無需進(jìn)行任何限制。

請注意,在禁用 CORS 后,跨域請求將不受 Spring Security 的限制,這可能會導(dǎo)致安全風(fēng)險。建議在開發(fā)環(huán)境中使用此配置進(jìn)行臨時調(diào)試和測試,而在生產(chǎn)環(huán)境中仔細(xì)考慮跨域請求的安全控制。

  1. 使用代理服務(wù)器(如 Nginx)進(jìn)行跨域設(shè)置:
    如果你的應(yīng)用程序部署在代理服務(wù)器(如 Nginx)后面,你可以通過配置代理服務(wù)器來解決跨域問題。在 Nginx 配置中添加以下內(nèi)容:
location / {
    add_header Access-Control-Allow-Origin http://example.com;
    add_header Access-Control-Allow-Methods GET, POST, PUT, DELETE;
    add_header Access-Control-Allow-Headers *;
    proxy_pass http://your-backend-server;
}

上面的示例中,配置了允許來自 http://example.com 域名的請求訪問,并轉(zhuǎn)發(fā)到后端服務(wù)器。

常見跨域http響應(yīng)頭說明

在跨域請求中,常見的響應(yīng)頭配置包括以下幾個:

  • Access-Control-Allow-Origin:指定允許訪問的源(域)列表??梢栽O(shè)置為具體的* 域名,也可以使用通配符 "" 表示允許任意域進(jìn)行訪問。

  • Access-Control-Allow-Methods:指定允許的請求方法。例如,“GET, POST, * PUT, DELETE” 表示允許使用這些方法進(jìn)行請求。*

  • Access-Control-Allow-Headers:指定允許的請求頭信息??梢栽O(shè)置為具體的頭部* 字段,或者使用 "" 表示允許任意頭部字段。

  • Access-Control-Allow-Credentials:指定是否允許發(fā)送身份憑證(如 * cookies、HTTP 認(rèn)證或客戶端 SSL 證書)到跨域請求的目標(biāo)服務(wù)器。如果設(shè)置為 * true,則允許發(fā)送身份憑證;如果設(shè)置為 false,則不允許發(fā)送身份憑證。*

  • Access-Control-Expose-Headers:指定允許瀏覽器訪問的響應(yīng)頭信息。例如,* “Content-Type, Authorization” 表示允許訪問這些響應(yīng)頭。*

  • Access-Control-Max-Age:指定預(yù)檢請求的有效期,即在發(fā)送實際請求前,瀏覽器對* 該跨域請求進(jìn)行預(yù)檢的時間間隔。單位為秒。

以下是一個常見的跨域響應(yīng)頭的配置示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-730660.html

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Content-Type, Authorization
Access-Control-Max-Age: 3600

到了這里,關(guān)于跨域介紹及Java中常見的跨域解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 最常見的六種跨域解決方案

    最常見的六種跨域解決方案

    前言:什么是跨域? JSONP CORS 搭建Node代理服務(wù)器 Nginx反向代理 postMessage Websocket 總結(jié) 跨域就是當(dāng)在頁面上發(fā)送ajax請求時, 由于瀏覽器同源策略的限制,要求當(dāng)前頁面和服務(wù)端必須同源,也就是協(xié)議、域名和端口號必須一致 。 如果協(xié)議、域名和端口號中有其中一個不一致,

    2024年01月25日
    瀏覽(24)
  • 前端常見跨域解決方案(jsonp,cors,proxy,postMessage,webSocket)

    一、JSONP(jsonp) 概念: JSONP(JSON with Padding,填充式 JSON 或參數(shù)式 JSON)是一種通過 優(yōu)點: 簡單易用 兼容性好,支持各種瀏覽器 缺點: 只能實現(xiàn) GET 請求,無法實現(xiàn) POST 等其他類型的請求 安全性較低,容易受到 XSS 攻擊 Eg: 為什么需要動態(tài)生成標(biāo)簽,而不是直接通過 原因有

    2024年02月07日
    瀏覽(26)
  • Web系統(tǒng)常見安全漏洞介紹及解決方案-CSRF攻擊

    Web系統(tǒng)常見安全漏洞介紹及解決方案-CSRF攻擊

    ??博客主頁:拒絕冗余 – 生命不息,折騰不止 ??訂閱專欄:『Web安全』 ??如覺得博主文章寫的不錯或?qū)δ阌兴鶐椭脑?,還望大家多多支持呀! ??關(guān)注?、點贊??、收藏??、評論。 CSRF跨站請求偽造,全稱Cross-site request forgery,是指利用受害者尚未失效的身份認(rèn)證信息

    2024年01月22日
    瀏覽(26)
  • Java常見Bug解決方案

    Java常見Bug解決方案

    剛開始學(xué)習(xí)Java語言的小伙伴, 很可能被各種各樣的程序bug搞得焦頭爛額, 甚至被勸退。別怕,健哥將手把手帶你了解Java中的異常體系, 如何識別Bug以及如何解決Bug。 讓我們先來了解下Java中的異常分類, 如下圖: Java中的異常分為Error錯誤和Exception異常兩大類 Error錯誤 : 一般所有

    2024年02月13日
    瀏覽(41)
  • Java 常見緩存詳解以及解決方案

    Java 常見緩存詳解以及解決方案

    首先我們準(zhǔn)備一個接口 兩個實現(xiàn)的方法, 當(dāng)我們調(diào)用這個queryAll()方法時我們需要調(diào)用selectAll()方法來查詢數(shù)據(jù) ?調(diào)用此接口實現(xiàn)效果 ?這個時候我們就可以發(fā)現(xiàn)了問題,我們調(diào)用方法之后對數(shù)據(jù)庫查詢了兩次,但是只有一次請求這樣進(jìn)行了多次查詢,造成了資源的浪費(fèi)

    2024年01月25日
    瀏覽(21)
  • 跨域解決方案

    因為瀏覽器可以同時打開很多頁面,可以同時保存很多授權(quán)信息,瀏覽器為了安全問題,采用了同源策略(瀏覽器存在跨域問題,服務(wù)器不存在跨域問題) 同源策略:是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到XSS、CSRF等攻

    2024年02月08日
    瀏覽(21)
  • 跨域解決方案(9種)

    說起跨域,就要知道什么是瀏覽器同源策略 瀏覽器同源策略:必須是協(xié)議、域名、端口完全一致的才符合同源策略 如果以上三項,有一項不同都涉及到跨域問題 瀏覽器是從兩個方面去做這個同源策略的,一是針對接口的請求,二是針對Dom的查詢。 有一個東西叫 cookie ,一般

    2024年02月04日
    瀏覽(20)
  • 跨域問題解決方案(三種)

    跨域問題解決方案(三種)

    具有相同的Origin,也即是擁有相同的協(xié)議、主機(jī)地址以及端口。一旦這三項數(shù)據(jù)中有一項不同,那么該資源就將被認(rèn)為是從不同的Origin得來的,進(jìn)而不被允許訪問。 是一個W3C標(biāo)準(zhǔn)。允許瀏覽器向跨源(協(xié)議 + 域名 + 端口)服務(wù)器,發(fā)出XMLHttpRequest請求,從而克服了AJAX只能同源使

    2024年02月07日
    瀏覽(95)
  • 前端面試:【跨域與安全】跨域問題及解決方案

    嗨,親愛的Web開發(fā)者!在構(gòu)建現(xiàn)代Web應(yīng)用時,跨域問題和安全性一直是不可忽視的挑戰(zhàn)之一。本文將深入探討跨域問題的背景以及解決方案,以確保你的應(yīng)用既安全又能與其他域名的資源進(jìn)行互操作。 1. 什么是跨域問題? 跨域問題指的是在Web開發(fā)中,瀏覽器的同源策略(S

    2024年02月11日
    瀏覽(97)
  • js跨域的解決方案

    js跨域的解決方案

    指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,簡單來說是瀏覽器同源政策的限制,瀏覽器針對于ajax的限制。 同源政策 兩個頁面擁有相同的 協(xié)議,端口,域名 就是同源,如果有一個不相同就是不同源。 同源政策產(chǎn)生的目的 保護(hù)用戶信息安全,防止一些網(wǎng)站盜取用戶信息。 常見

    2024年02月10日
    瀏覽(778)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包