這幾天先是偏頭痛帆啃,接著又腰桿痛,上了年齡的程序員真的是傷不起柴我,直到今天才有時間靜下來寫點東西。
到家附近的骨科醫(yī)院看病驼仪,說是臀上皮神經(jīng)炎,原因可能是久坐引起的袜漩,醫(yī)生給做了小針刀绪爸,那可真是一個舒爽,拿著針在‘臀’上到處居宙攻,完事后奠货,貌似好了?其實就是從非常難受變成了難受座掘。
這幾天雖然身體不給力递惋,精神其實還是很好滴,看了一些HTTP和HTTPS相關(guān)的東西溢陪,詳情如下萍虽。
跨域
現(xiàn)在知道好的跨域方式:代理、JSONP嬉愧、CORS贩挣。
JSONP是老生常談的東西了喉前,不知道的同學(xué)可以谷歌一下没酣,今天主要看看CORS。
CORS是XHR2中才有的東西卵迂,但是很好用裕便,解決了包括遠(yuǎn)程字體在內(nèi)的很多問題。
在響應(yīng)頭中加入:
- Access-Control-Allow-Origin:定義request來源见咒,*號表示不限制
- Access-Control-Allow-Headers:允許請求的頭部信息
- Access-Control-Allow-Methods:定義允許的方法
- Access-Control-Max-Age:生效時間
主要用到的就是以上的頭信息偿衰,是不是比JSONP方便很多?
緩存
緩存分為客戶端緩存和服務(wù)器緩存(CDN改览、redis)下翎,這里主要說一下客戶端緩存(不包括localstorage)。
Cache-Control
- no-cache:不經(jīng)過緩存宝当,強制每次直接請求服務(wù)器
- no-store:強制任何情況下都不保留緩存副本
- max-age:緩存生效時間
- public:任何途徑都可以緩存該資源
- private:主要用來限制用戶和代理服務(wù)器
校驗值
- Last-Modified:資源最后修改時間
- If-Modified-Since:上次服務(wù)器發(fā)過來的最后修改時間
- Etag:資源在服務(wù)器的標(biāo)識符
- If-None-Match:上次發(fā)過來的Etag
配置Last-Modified/ETag的情況下视事,瀏覽器再次訪問資源,還是會發(fā)送請求到服務(wù)器詢問文件是否已經(jīng)修改庆揩,如果沒有俐东,服務(wù)器會只發(fā)送一個304回給瀏覽器跌穗,告訴瀏覽器直接從自己本地的緩存取數(shù)據(jù);如果修改過那就整個數(shù)據(jù)重新發(fā)給瀏覽器虏辫。
Cache-Control則不同蚌吸,如果檢測到本地的緩存還是有效的時間范圍內(nèi),瀏覽器直接使用本地副本砌庄,不會發(fā)送任何請求羹唠。兩者一起使用時,Cache-Control的優(yōu)先級要高于Last-Modified/ETag娄昆。即當(dāng)本地副本根據(jù)Cache-Control發(fā)現(xiàn)還在有效期內(nèi)時肉迫,則不會再次發(fā)送請求去服務(wù)器詢問修改時間了。
一般情況下稿黄,使用Cache-Control會配合Last-Modified/ETag一起使用喊衫,因為即使服務(wù)器設(shè)置緩存時間, 當(dāng)用戶點擊“刷新”按鈕時,瀏覽器會忽略緩存繼續(xù)向服務(wù)器發(fā)送請求杆怕,這時Last-Modified/ETag將能夠很好利用304族购,從而減少響應(yīng)開銷。
HTTPS CA 非對稱加密 對稱加密
看我能不能解釋清楚
為什么后面?zhèn)鬏斶^程要用對稱加密陵珍?因為速度快唄寝杖。
不懂非對稱加密的,可以google一下互纯,很多生動的解釋瑟幕。
- HTTP 1 的報文信息是明文傳輸,很容易被劫取和模仿留潦,就算對傳輸數(shù)據(jù)加密也擋不住某些人
- 應(yīng)用和服務(wù)器連接的時候交換密鑰只盹,以后互相傳送的消息都以定義好的密鑰解密,這就是對稱加密
- 第一次傳送密鑰過程很容易泄密兔院,而且如果某一個用戶被破解殖卑,其他都不安全了
- 將第一次發(fā)送密鑰的過程改成非對稱加密傳送
- 瀏覽器發(fā)送連接請求,服務(wù)器將公鑰送給瀏覽器坊萝,瀏覽器用服務(wù)器的公鑰加密‘對稱密鑰’孵稽,發(fā)送給服務(wù)器
- 因為信息是服務(wù)器的公鑰加密的,所以只有服務(wù)器的私鑰才能解密
- 服務(wù)器解密后十偶,兩端以后就用這個對稱密鑰來加解密信息菩鲜。
- 這個還有個漏洞,就是服務(wù)器第一次傳送公鑰給瀏覽器的時候惦积,很容易被劫持
- 所以需要一個權(quán)威機構(gòu)給服務(wù)器頒發(fā)的證書來簽名這個公鑰接校,再發(fā)送給客戶端
- 客戶端接收到證書和公鑰后,用此權(quán)威機構(gòu)的算法解密和生成就能得到公鑰
- 這就是HTTPS
- HTTPS常規(guī)來說荣刑,分為dv-個人,ov-組織,ev-最強馅笙,3個等級伦乔,等級越高身份安全越好,dv一般是免費的
- 免費推薦:let's encrypt董习,又拍云烈和,godaddy;收費的推薦:symantec, geotrust,globalsign