成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

完整的url以及同源跨域處理

BicycleWarrior / 2336人閱讀

摘要:超文本傳輸協(xié)議訪問該資源。它的基本思想是,網(wǎng)頁通過添加一個元素,向服務(wù)器請求數(shù)據(jù),這種做法不受同源政策限制服務(wù)器收到請求后,將數(shù)據(jù)放在一個指定名字的回調(diào)函數(shù)里傳回來。該字段也可以設(shè)為星號,表示同意任意跨源請求。

前言:隨著工作時間的增長,前面學(xué)過的東西開始慢慢遺忘,抽空的時候就將一些資料整理整理,順一順,也當(dāng)作一種溫習(xí)。
我只是前端工匠,防止自己成為【一斷網(wǎng)就無法工作的程序員】

url的完整結(jié)構(gòu)
協(xié)議類型(protocol)
    通過URL可以指定的主要有以下幾種:http、ftp、gopher、telnet、file等
    
    URL的組成協(xié)議 1、protocol(協(xié)議):指定使用的傳輸協(xié)議,下表列出 protocol 屬性的有效方案名稱。 
    
    最常用的是HTTP協(xié)議,它也是目前WWW中應(yīng)用最廣的協(xié)議。
    
    http —— 超文本傳輸協(xié)議訪問該資源。 格式 http://
    https —— 用安全套接字層傳送的超文本傳輸協(xié)議訪問該資源。 格式 https://
    ftp —— 通過 FTP訪問資源。格式 FTP://
    mailto —— 電子郵件地址 通過 SMTP 訪問。 格式 mailto: 
    ldap —— 輕型目錄訪問協(xié)議搜索
    file —— 資源是本地計算機(jī)上的文件。格式file://
    news —— Usenet新聞組
    gopher —— Gopher協(xié)議
    telnet —— Telnet協(xié)議


主機(jī)名(hostname)
    是指存放資源的服務(wù)器的域名系統(tǒng) (DNS) 主機(jī)名或 IP 地址。
    有時,在主機(jī)名前也可以包含連接到服務(wù)器所需的用戶名和密碼(格式:username:password)。
端口號(port)
    整數(shù),可選,省略時使用方案的默認(rèn)端口,各種傳輸協(xié)議都有默認(rèn)的端口號,
    如http的默認(rèn)端口為80,https的默認(rèn)端口為443
路徑及文件名(path)
    由零或多個“/”符號隔開的字符串,一般用來表示主機(jī)上的一個目錄或文件地址
參數(shù)(parameters)
    傳遞參數(shù),可有多個參數(shù),用“&”符號隔開,每個參數(shù)的名和值用“=”符號隔開
hash值
    #是用來指導(dǎo)瀏覽器動作的,對服務(wù)器端完全無用。所以,HTTP請求中不包括#。
    這些字符都不會被發(fā)送到服務(wù)器端。
    改變#不觸發(fā)網(wǎng)頁重載
    改變#會改變?yōu)g覽器的訪問歷史
    
    默認(rèn)情況下,Google的網(wǎng)絡(luò)蜘蛛忽視URL的#部分。
    但是,Google還規(guī)定,如果你希望Ajax生成的內(nèi)容被瀏覽引擎讀取,
    那么URL中可以使用"#!",Google會自動將其后面的內(nèi)容轉(zhuǎn)成查詢字符串_escaped_fragment_的值
    

同源策略

協(xié)議相同

域名相同

端口相同

如果非同源,共有三種行為收到限制

(1) Cookie、LocalStorage 和 IndexDB 無法讀取。
(2) DOM 無法獲得。
(3) AJAX 請求不能發(fā)送。
Cookie

Cookie 是服務(wù)器寫入瀏覽器的一小段信息,只有同源的網(wǎng)頁才能共享。

cookie的組成部分
    Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

    NAME=VALUE
    NAME是該Cookie的名稱,VALUE是該Cookie的值。
    在字符串“NAME=VALUE”中,不含分號、逗號和空格等字符。
    
    Expires=DATE:Expires變量是一個只寫變量,它確定了Cookie有效終止日期。
    該屬性值DATE必須以特定的格式來書寫:星期幾,DD-MM-YY HH:MM:SS GMT,
    GMT表示這是格林尼治時間。
    反之,不以這樣的格式來書寫,系統(tǒng)將無法識別。
    該變量可省,如果缺省時,則Cookie的屬性值不會保存在用戶的硬盤中,
    而僅僅保存在內(nèi)存當(dāng)中,Cookie文件將隨著瀏覽器的關(guān)閉而自動消失。
    
    Domain=DOMAIN-NAME:Domain該變量是一個只寫變量,
    它確定了哪些Internet域中的Web服務(wù)器可讀取瀏覽器所存取的Cookie,
    即只有來自這個域的頁面才可以使用Cookie中的信息。
    這項設(shè)置是可選的,如果缺省時,設(shè)置Cookie的屬性值為該Web服務(wù)器的域名。
    
    Path=PATH:Path屬性定義了Web服務(wù)器上哪些路徑下的頁面可獲取服務(wù)器設(shè)置的Cookie。
    一般如果用戶輸入的URL中的路徑部分從第一個字符開始包含Path屬性所定義的字符串,
    瀏覽器就認(rèn)為通過檢查。如果Path屬性的值為“/”,
    則Web服務(wù)器上所有的WWW資源均可讀取該Cookie。
    
    Secure:在Cookie中標(biāo)記該變量,
    表明只有當(dāng)瀏覽器和Web Server之間的通信協(xié)議為加密認(rèn)證協(xié)議時,
    瀏覽器才向服務(wù)器提交相應(yīng)的Cookie。當(dāng)前這種協(xié)議只有一種,即為HTTPS。
    
cookie 在 Request Headers 中的傳輸格式
    Cookie: KEY=VALUE; KEY=VALUE; KEY=VALUE
    是沒有 域 和 過期時間 的
跨域處理

兩個網(wǎng)頁一級域名相同,只是二級域名不同,瀏覽器允許通過設(shè)置document.domain共享 Cookie。

document.domain = "example.com";

如果兩個網(wǎng)頁不同源,就無法拿到對方的DOM。

典型的例子是iframe窗口和window.open方法打開的窗口,它們與父窗口無法通信。

AJAX

除了架設(shè)服務(wù)器代理(瀏覽器請求同源服務(wù)器,再由后者請求外部服務(wù)),

vue項目中 開發(fā)環(huán)境的跨域處理

proxyTable

dev: {
     
    // Paths
    assetsSubDirectory: "static",
    assetsPublicPath: "./",
    proxyTable: {
        "/api": {
            target: "http://temp.com",// 請換成你需要跨域請求的地址
            changeOrigin: true,
            pathRewrite: {
              "^/api": ""
            }
        }
    }
}

proxyTable中的pathRewrite的/api理解成用‘/api’代替target里面的地址,
后面組件中我們掉接口時直接用api代替

有三種方法規(guī)避這個限制

JSONP
WebSocket
CORS

    JSONP
    是服務(wù)器與客戶端跨源通信的常用方法。
    最大特點就是簡單適用,老式瀏覽器全部支持,服務(wù)器改造非常小。
    它的基本思想是,網(wǎng)頁通過添加一個                
閱讀需要支付1元查看
<