HTTP協議知識
阿新 • • 發佈:2019-02-15
瀏覽器中輸入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。目的是為了去獲取瀏覽器的認可。