1. 程式人生 > >HTTP協議知識

HTTP協議知識

瀏覽器中輸入URL到完整渲染出來,HTTP過程如下圖:

這裡寫圖片描述

HTTP協議的三次握手

在客戶端和服務端之間傳送請求和返回響應的過程,是需要進行TCP connection。

TCP(Transmission Control Protocol) 傳輸控制協議

TCP是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立一個連線: 用來規由於網路延遲等問題而造成的不必要開銷。

URI, URL, URN
URI 統一資源標誌符,包含URL 和URN

URN 永久同意資源標誌符

HTTP跨域請求資源:

如何設定響應頭才可以讓跨域請求資源生效?

方式一:

// node
response.writeHead(200, {
    "Access-Control-Allow-Origin" : "*"
})

註釋: 在跨域請求中,實際資料是已經返回了,只不過瀏覽器的同源策略解析資料內容,發現不允許將其攔截。

方式二:

<script src="http://www.google.com"></script>

瀏覽器不會限制img,script元素中的src對應的路徑傳送的請求和返回值。

在設定響應頭

response.writeHead(200, {
    "Access-control-Allow-Origin"
: "*" })

其中” * “表示所有服務的請求都被允許跨域,但是這樣太不安全。所以應當設定成當前確定的域。
比如:

response.writeHead(200, {
    "Access-control-Allow-Origin" : "http://www.baidu.com"
})

CORS預請求
自定義請求頭在跨域的時候,也是不被允許的。
請求頭:

headers: {
    "X-Test-Cors": "123"
}

報錯如下:
這裡寫圖片描述

解決方法:

// 在響應頭中設定
response.writeHead(200, {
    "Access-Control-Allow-Headers"
: "X-Test-Cors" })

會發現頁面的請求中多了一個請求,這個請求的方法是OPTIONS。目的是為了去獲取瀏覽器的認可。
這裡寫圖片描述