2023-05-12 1850 次
Nginx Web服務(wù)器,直接貼代碼,如果你的服務(wù)器也需要設(shè)置Nginx請求頭,可以直接使用。
在長期的網(wǎng)站建設(shè)和軟件開發(fā)過程種,生產(chǎn)環(huán)境的服務(wù)器運維服務(wù)中最常見的設(shè)置。
在服務(wù)器塊下的nginx.conf中添加以下參數(shù)
server {
listen 443;
server_name ds.v.com; # 駕駛
location / {
#Nginx配置
#Strict-Transport-Security響應(yīng)頭缺失
add_header Strict-Transport-Security 'max-age=15552000';
#HTTP X-Permitted-Cross-Domain-Policies 響應(yīng)頭缺失
add_header X-Permitted-Cross-Domain-Policies 'none';
#點擊劫持漏洞(X-Frame-Options)
add_header X-Frame-Options SAMEORIGIN;
#Referrer-Policy響應(yīng)頭缺失
add_header Referrer-Policy "no-referrer";
#X-Content-Type-Options響應(yīng)頭缺失
add_header X-Content-Type-Options nosniff;
#X-Download-Options響應(yīng)頭缺失
add_header X-Download-Options 'noopen';
# Content-Security-Policy響應(yīng)頭缺失
add_header Content-Security-Policy "script-src * 'unsafe-inline' 'unsafe-eval'";
#X-XSS-Protection響應(yīng)頭缺失
add_header X-XSS-Protection '1;mode=block';
#會話cookie中缺少HttpOnly屬性
add_header Set-Cookie "Path=/; HttpOnly; Secure"
...
}
}
本次操作逐一排查,凡是新增的服務(wù)器都相應(yīng)做了設(shè)置,以前老客戶的服務(wù)器之前都已經(jīng)操作過,不在此次的范圍內(nèi)。
已于昨日處理完畢,此次處理沒有影響服務(wù)器使用。
請求
請求,由客戶端向服務(wù)端發(fā)出,可以分為3部分內(nèi)容:請求方法(Request Method) 、請求的網(wǎng)址( Request URL )、請求報文(Request message)
請求方法
常見的請求方法有兩種:GET和POST。
在瀏覽器中直接輸入 URL 并回車,這便發(fā)起了一個 GET 請求,請求的參數(shù)會直接包含到 URL里。例如,在百度中搜索 Python ,這就是一個 GET 請求,鏈接為 https://www. baidu.corn/s?wd=Pthon,其中 URL 中包含了請求的參數(shù)信息,這里參數(shù) wd 表示要搜尋的關(guān)鍵字 。
POST 請求大多在表單提交時發(fā)起。比如,對于一個登錄表單,輸入用戶名和密碼后,點擊“登錄”按鈕,這通常會發(fā)起一個 POST請求,其數(shù)據(jù)通常以表單的形式傳輸,而不會體現(xiàn)在 URL中。
兩者區(qū)別
GET 請求中的參數(shù)包含在 URL 里面,數(shù)據(jù)可以在 URL 中看到,而 POST 請求的 URL 會包含這些數(shù)據(jù),數(shù)據(jù)都是通過表單形式傳輸?shù)?,會包含在請求體中。
GET 請求提交的數(shù)據(jù)最多只有 1024 字節(jié),而 POST 方式?jīng)]有限制。
一般來說,登錄時,需要提交用戶名和密碼,其中包含了信息,使用 GET 方式請求的話,密碼就會暴露在 URL 里面,造成密碼泄露,所以這里-以 POST 方式發(fā)送。上傳文件時,由于文件內(nèi)容比較大,也會選用 POST 方式。
其他請求方式
請求報文
由請求行、請求頭、請求體組成
請求行
由請求方式和HTTP協(xié)議和版本組成
如:GET / HTTP/1.1
請求頭
請求頭,用來說明服務(wù)器要使用的附加信息,比較重要的信息有 Cookie 、Referer、User-Agent等。下面簡要說明一些常用的頭信息。
Accept
請求報頭域,用于指定客戶端可接受哪些類型的信息。
Accept-Language
指定客戶端可接受的語言類型。
Accept-Encoding
指定客戶端可接受的內(nèi)容編碼。
Host
用于指定請求資源的主機 IP 和端口號,其內(nèi)容為請求 URL 的原始服務(wù)器或網(wǎng)關(guān)的位置。從HTTP 1. 版本開始,請求必須包含此內(nèi)容。
Cookie
也常用復(fù)數(shù)形式 Cookies ,這是網(wǎng)站為了辨別用戶進行會話跟蹤而存儲在用戶本地的數(shù)據(jù)。它的主要功能是維持當前訪問會話。例如,我們輸入用戶名和密碼成功登錄某個網(wǎng)站后,服務(wù)器會用會話保存登錄狀態(tài)信息,后面我們每次刷新或請求該站點的其他頁面時,會發(fā)現(xiàn)都是登錄狀態(tài),這就是Cookies 的功勞。Cookies 里有信息標識了我們所對應(yīng)的服務(wù)器的會話,每次瀏覽器在請求該站點的頁面時,都會在請求頭中加上 Cookies 并將其發(fā)送給服務(wù)器,服務(wù)器通過 Cookies 識別出是我們自己,并且查出當前狀態(tài)是登錄狀態(tài),所以返回結(jié)果就是登錄之后才能看到的網(wǎng)頁內(nèi)容。
Referer
此內(nèi)容用來標識這個請求是從哪個頁面發(fā)過來的,服務(wù)器可以拿到這 信息并做相應(yīng)的處理,如做來源統(tǒng)計、防盜鏈處理等。
User-Agent
簡稱 UA ,它是一個特殊的字符串頭,可以使服務(wù)器識別客戶使用的操作系統(tǒng)及版本 瀏覽器及版本等信息 在做爬蟲時加上此信息,可以偽裝為瀏覽器;如果不加,很可能會被識別出為爬蟲。
Content-Type
也叫互聯(lián)網(wǎng)媒體類型( Internet Media Type )或者 MIME 類型,在 HTTP協(xié)議消息頭中,它用來表示具體請求中的媒體類型信息。例如, text/html 代表 HTML 格式,image/gif 代表 GIF 圖片, application/json 代表JSON 類型,
在爬蟲中,如果要構(gòu)造 POST 請求,需要使用正確的 Content-Type,并了解各種請求庫的各個參數(shù)設(shè)置時使用的是哪種 Content-Type,不然可能會導(dǎo)致 POST 提交后無法正常響應(yīng)。
請求體
內(nèi)容是 POST 請求中的表單數(shù)據(jù),而對于 GET 請求,請求體則為空。
響應(yīng)
響應(yīng),由服務(wù)端返回給客戶端,響應(yīng)報文可以分為三部分:響應(yīng)行( Response line )、響應(yīng)頭( Response Headers )和響應(yīng)體( Response Body)。
響應(yīng)行
由HTTP版本響應(yīng)、狀態(tài)碼、狀態(tài)描述組成。
如;HTTP/1.1 200 OK
響應(yīng)狀態(tài)碼
表示服務(wù)器的響應(yīng)狀態(tài)。
常見的狀態(tài)碼有:
200
請求成功
307
重定向
400
錯誤的請求
404
請求資源在服務(wù)器中不存在
500
服務(wù)器內(nèi)部源代碼出現(xiàn)錯誤
狀態(tài)碼和錯誤原因如下圖:
響應(yīng)頭
用來說明響應(yīng)的數(shù)據(jù)
常用的響應(yīng)頭如下:
Accept-Patch
指定服務(wù)器所支持的文檔補丁格式
Accept-Ranges
服務(wù)器所支持的內(nèi)容范圍
Content-Disposition
對已知MIME類型資源的描述,瀏覽器可以根據(jù)這個響應(yīng)頭決定是對返回資源的動作,如:將其下載或是打開。
Content-Encoding
響應(yīng)資源所使用的編碼類型。
Content-Language
響就內(nèi)容所使用的語言
Content-Length
響應(yīng)消息體的長度,用8進制字節(jié)表示
Content-Type
當前內(nèi)容的MIME類型
Date
此條消息被發(fā)送時的日期和時間(以RFC 7231中定義的"HTTP日期"格式來表示)
Expires
指定一個日期/時間,超過該時間則認為此回應(yīng)已經(jīng)過期
Server
服務(wù)器的名稱
響應(yīng)體
就是網(wǎng)頁的代碼