一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

跨域

 酒駕的酒瓶蓋 2020-03-12

要想弄明白什么是跨域就要知道什么是同源策略,要想知道什么是同源策略就要先知道什么是源。

源:如果兩個(gè)頁(yè)面(接口)的協(xié)議,端口或者域名都相同,那么兩個(gè)頁(yè)面就有相同的源。

下表給出了相對(duì)http://store./dir/page.html同源檢測(cè)的示例:
URL 結(jié)果 原因
http://store./dir2/other.html 成功
http://store./dir/inner/another.html 成功
https://store./secure.html 失敗 不同協(xié)議 ( https和http )
http://store.:81/dir/etc.html 失敗 不同端口 ( 81和80)
http://news./dir/other.html 失敗 不同域名 ( news和store )

同源策略

同源策略是瀏覽器的一個(gè)安全限制,從一個(gè)源加載的文檔或者腳本默認(rèn)不能訪問另一個(gè)源的資源。例如a.com/111/html頁(yè)面不能訪問b.com/person這種接口,因?yàn)樗麄兪遣挥玫脑础?br>注意:下面幾個(gè)不受同源策略限制
1、頁(yè)面中鏈接(例如頁(yè)面的<a href="http://www.w3school.com.cn">W3School</a>)、重定向和表單提交不受同源策略限制
2、跨域資源的引入是不受同源策略的限制,但是js讀不到其中的內(nèi)容。<script src="..."></script>,<img>,<link>,<iframe>等。

怎么解決跨域

介紹生產(chǎn)中最常用的兩種解決跨域的方法。CORS解決跨域問題和通過代理解決跨域問題。

CORS解決跨域問題

CORS是Cross-Origin Resources Sharing的簡(jiǎn)寫,中文翻譯為“跨域資源共享”,是W3C的標(biāo)準(zhǔn)。通過CORS,瀏覽器允許向其他源服務(wù)器發(fā)送資源請(qǐng)求。
設(shè)置CORS需要瀏覽器和服務(wù)器兩個(gè)方面支持。目前基本上主流的瀏覽器都支持CORS(IE 8 和 9 需要通過 XDomainRequest 來實(shí)現(xiàn)),所以只要后端服務(wù)支持CORS,就能夠?qū)崿F(xiàn)跨域。服務(wù)端設(shè)置 Access-Control-Allow-Origin 就可以開啟 CORS。 該屬性表示哪些域名可以訪問資源,如果設(shè)置通配符(*)則表示所有網(wǎng)站都可以訪問資源。要實(shí)現(xiàn)CORS跨域其實(shí)非常簡(jiǎn)單,說白了就是在服務(wù)端設(shè)置一系列的HTTP頭,主要分為請(qǐng)求頭和響應(yīng)頭,在請(qǐng)求和響應(yīng)時(shí)加上這些HTTP頭即可輕松實(shí)現(xiàn)CORS。
雖然設(shè)置 CORS 和前端沒什么關(guān)系,但是通過這種方式解決跨域問題的話,會(huì)在發(fā)送請(qǐng)求時(shí)出現(xiàn)兩種情況,分別為簡(jiǎn)單請(qǐng)求和復(fù)雜請(qǐng)求。針對(duì)不同的情況,服務(wù)端的設(shè)置也不一樣。

  1. 簡(jiǎn)單請(qǐng)求
    只要同時(shí)滿足以下兩大條件,就屬于簡(jiǎn)單請(qǐng)求
    條件 1:使用下列方法之一:
    GET
    HEAD
    POST
    條件 2:Content-Type 的值僅限于下列三者之一:
    text/plain
    multipart/form-data
    application/x-www-form-urlencoded

  2. 復(fù)雜請(qǐng)求
    不符合以上條件的請(qǐng)求就肯定是復(fù)雜請(qǐng)求了。
    復(fù)雜請(qǐng)求的 CORS 請(qǐng)求,會(huì)在正式通信之前,增加一次 HTTP 查詢請(qǐng)求,稱為"預(yù)檢"請(qǐng)求,該請(qǐng)求是 option 方法的,通過該請(qǐng)求來向服務(wù)端詢問從當(dāng)前源發(fā)送請(qǐng)求以及允許的請(qǐng)求方法和請(qǐng)求字段。
    HTTP請(qǐng)求頭:

#請(qǐng)求域
Origin: ”http://localhost:8080“

#這兩個(gè)屬性只出現(xiàn)在預(yù)檢請(qǐng)求中,即OPTIONS請(qǐng)求
Access-Control-Request-Method: ”POST“
Access-Control-Request-Headers: ”content-type“

HTTP響應(yīng)頭:

#允許向該服務(wù)器提交請(qǐng)求的URI,*表示全部允許,在SpringMVC中,如果設(shè)成*,會(huì)自動(dòng)轉(zhuǎn)成當(dāng)前請(qǐng)求頭中的Origin
Access-Control-Allow-Origin: ”http://localhost:8080“

#允許訪問的頭信息
Access-Control-Expose-Headers: "Set-Cookie"

#預(yù)檢請(qǐng)求的緩存時(shí)間(秒),即在這個(gè)時(shí)間段里,對(duì)于相同的跨域請(qǐng)求不會(huì)再預(yù)檢了
Access-Control-Max-Age: ”1800”

#允許Cookie跨域,在做登錄校驗(yàn)的時(shí)候有用
Access-Control-Allow-Credentials: “true”

#允許提交請(qǐng)求的方法,*表示全部允許
Access-Control-Allow-Methods:GET,POST,PUT,DELETE,PATCH

例如簡(jiǎn)單請(qǐng)求
請(qǐng)求頭:


image.png

響應(yīng)頭:

image.png

springboot里面可以這樣設(shè)置

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("*")
            .allowCredentials(true)
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
            .maxAge(3600);
    }
}

通過代理解決跨域問題

實(shí)現(xiàn)原理:同源策略是瀏覽器需要遵循的標(biāo)準(zhǔn),而如果是請(qǐng)求都發(fā)給代理服務(wù)器代理服務(wù)器再向后端服務(wù)器請(qǐng)求就可以規(guī)避跨域的問題。


image.png

例如用nginx做代理服務(wù)器。
nginx配置

server{
    # 監(jiān)聽80端口
    listen 80;
    # 域名是localhost
    server_name localhost;
    #凡是localhost:8080/api這個(gè)樣子的,都轉(zhuǎn)發(fā)到真正的服務(wù)端地址http://localhost:8080
    location ^~ /api {
        proxy_pass http://localhost:8080;
    }    
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产又粗又爽又猛又黄的 | 国产精品成人免费精品自在线观看| 久久综合亚洲精品蜜桃| 97人妻精品免费一区二区| 91老熟妇嗷嗷叫太91| 国产精品午夜小视频观看| 国产亚洲精品香蕉视频播放| 国产户外勾引精品露出一区| 一区二区免费视频中文乱码国产| 日韩一级一片内射视频4k| 亚洲美女国产精品久久| 国产成人精品午夜福利av免费| 大香蕉精品视频一区二区| 欧美一区二区口爆吞精| 一个人的久久精彩视频| 在线观看中文字幕91| 大尺度激情福利视频在线观看| 国产丝袜美女诱惑一区二区| 欧美日韩综合免费视频| 黄色片一区二区在线观看| 欧美人禽色视频免费看| 国产乱淫av一区二区三区| 开心久久综合激情五月天| 国产精品日本女优在线观看| 久久热在线视频免费观看| 日本高清一道一二三区四五区| 91欧美亚洲视频在线| 久久精品福利在线观看| 中国少妇精品偷拍视频| 日本99精品在线观看| 日韩一级欧美一级久久| 中国少妇精品偷拍视频| 亚洲欧洲日韩综合二区| 五月天六月激情联盟网| 老司机精品视频免费入口| 中文字幕乱码免费人妻av| 中国美女偷拍福利视频| 国产欧美一区二区久久| 国产亚洲不卡一区二区| 国产在线观看不卡一区二区| 国产av精品高清一区二区三区|