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

解讀前后端分離項目的跨域問題

 更新時間:2024年11月28日 16:48:48   作者:又菜又愛玩的晴晴  
文章介紹了跨域問題的原因——瀏覽器的同源策略限制,以及CORS(跨域資源共享)的概念,CORS通過服務器設置特定的響應頭來允許跨域請求,文章還概述了后端解決跨域問題的幾種方式,并簡要介紹了前端處理跨域請求的方法

跨域問題的原因

根本原因:瀏覽器有同源策略限制,當前域名的js只能讀取同城下的窗口屬性,這是一個基礎安全功能

同源策略

若兩資源的URL中的協(xié)議、域名、端口都相同就成為同源,如果兩資源不同源,則不允許共享資源。

例如:http://www.baidu.com/a/hello.html

請求地址結果原因

http://www.baidu.com/a/java.html

成功同一域名端口,相同文件夾

http://www.baidu.com/b/hello.html

成功同一域名端口,不同文件夾

https://www.baidu.com/a/hello.html

失敗不同協(xié)議,http與https

http://www.baidu.com:8081/a/java.html

失敗不同端口,默認為8080端口
http://www.sina.com:8081/a/java.html失敗不同域名

跨域CORS

跨域就是解決不同域之間可以進行資源的相互訪問,為了避開瀏覽器的同源政策

CORS出現(xiàn)之前

瀏覽器接收到服務器回復—>檢查是否同源—>同源就響應,不同源就拒絕相應

CORS出現(xiàn)之后

瀏覽器接收到服務器回復 --> 檢查一下response header --> 發(fā)現(xiàn)有特定字段Access-Control-Allow-Origin --> 檢查這個header后面的值包不包含自己所在的域(打比方我們現(xiàn)在在www.baidu.com),瀏覽器檢查發(fā)現(xiàn)后response header里面寫的有Access-Control-Allow-Origin: https://www.baidu.com, 并且https://www.google.com正好我們在允許的域里面! --> 瀏覽器響應服務器返回的數(shù)據(jù)(response)。

瀏覽器要實現(xiàn)的內(nèi)容:

  • 接收到服務器的回復之后檢測回復頭里面是否含有特定字段!
  • 有的話查看自己的域名是否在內(nèi),一定要這兩個條件都符合!
  • 瀏覽器才會接受(或者說響應)服務器返回的回復!

服務器需要實現(xiàn)的內(nèi)容

  • 服務器需要在接受到瀏覽器發(fā)來的請求(request)后,在返回response之前!
  • 設置header,在header中里面包含特定字段,以便瀏覽器收到回復之后可以去檢查,有字段證明服務器同意服務這個網(wǎng)站,瀏覽器就可以接受回復,沒有字段或者字段的值不包含發(fā)送請求的網(wǎng)站,瀏覽器就不會響應回復內(nèi)容!

后端解決跨域問題的幾種方式

第一種:在application文件里

第二種:在配置類里加上注解

第三種:在過濾器里設置

@WebFilter(filterName = "CorsFilter ")
@Configuration
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin","*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        
        HttpServletRequest httpRequest = (HttpServletRequest) req;
		// OPTIONS method response
		if (httpRequest.getMethod().equals("OPTIONS"))
			((HttpServletResponse) res).sendError(HttpServletResponse.SC_OK);
        
        chain.doFilter(req, res);
    }
}

跨域的前端處理

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法

    Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法

    這篇文章主要介紹了Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法的相關資料,需要的朋友可以參考下
    2017-06-06
  • 基于SpringMVC實現(xiàn)網(wǎng)頁登錄攔截

    基于SpringMVC實現(xiàn)網(wǎng)頁登錄攔截

    SpringMVC的處理器攔截器類似于Servlet開發(fā)中的過濾器Filter,用于對處理器進行預處理和后處理。因此,本文將為大家介紹如何通過SpringMVC實現(xiàn)網(wǎng)頁登錄攔截功能,需要的小伙伴可以了解一下
    2021-12-12
  • @RefreshScope(nacos配置熱更新方式)

    @RefreshScope(nacos配置熱更新方式)

    文章主要介紹了Spring和Nacos對`@RefreshScope`注解的處理方式,Spring在每次調(diào)用被`@RefreshScope`注解的bean的屬性時,會先從本地緩存獲取,如果緩存不存在則重新創(chuàng)建并獲取最新環(huán)境配置
    2024-12-12
  • Java行為型設計模式之策略模式詳解

    Java行為型設計模式之策略模式詳解

    策略模式屬于Java-設計模式中行為模式之一,該模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換。本文將通過示例詳細講解這一模式,需要的可以參考一下
    2022-11-11
  • Intellij IDEA 關閉和開啟自動更新的提示?

    Intellij IDEA 關閉和開啟自動更新的提示?

    這篇文章主要介紹了Intellij IDEA 關閉和開啟自動更新的提示操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 使用Nacos作為配置中心的命名空間、配置分組

    使用Nacos作為配置中心的命名空間、配置分組

    文章詳細介紹了Spring Cloud Config配置中心的命名空間、配置集、配置集ID、配置分組以及如何在微服務中加載和使用這些配置,通過配置中心,可以實現(xiàn)配置隔離和集中管理,簡化微服務的配置維護
    2024-12-12
  • Java TCP編程之Scoket

    Java TCP編程之Scoket

    TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission Control Protocol,它是位于網(wǎng)絡OSI模型中的第四層
    2022-11-11
  • 基于JVM 中常見垃圾收集算法介紹

    基于JVM 中常見垃圾收集算法介紹

    下面小編就為大家分享一篇基于JVM 中常見垃圾收集算法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 解決Maven 項目報錯 java.httpservlet和synchronized使用方法

    解決Maven 項目報錯 java.httpservlet和synchronized使用方法

    下面小編就為大家?guī)硪黄鉀QMaven 項目報錯 java.httpservlet和synchronized使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • SpringBoot中REST API 接口傳參的實現(xiàn)

    SpringBoot中REST API 接口傳參的實現(xiàn)

    我們在開發(fā)?REST API?的過程中,經(jīng)常需要傳遞參數(shù),本文主要介紹了SpringBoot中REST API 接口傳參的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12

最新評論