『壹』 js如何判斷.net生成的cookie是否存在
function getCookie(name)
{
var result = null;
var myCookie = document.cookie + ";";
var searchName = name + "=";
var startOfCookie = myCookie.indexOf(searchName);
var endOfCookie;
if (startOfCookie != -1)
{
startOfCookie += searchName.length;
endOfCookie = myCookie.indexOf(";", startOfCookie);
result = unescape(myCookie.substring(startOfCookie, endOfCookie));
}
return result;
}
用這個函數取Cookie吧。接分~
『貳』 vue axios請求帶cookie
這個問題和vue無關。
跨域請求就會出現這樣的問題。
由於CORS(cross origin resource share)規范的存在,瀏覽器會首先發送一次options嗅探,同時header帶上origin,判斷是否有跨域請求許可權,伺服器響應access control allow origin的值,供瀏覽器與origin匹配,如果匹配則正式發送post請求。
『叄』 登陸的第一個Get消息怎麼帶了cookie
無論是get還是post請求,http請求頭都會帶著cookie。js也可以讀寫cookie。響應(後台)的cookie可以用Fiddler抓包看到。js讀寫cookie可以用前端單步調試,或直接看代碼。
『肆』 如何獲取request請求攜帶的cookie
Cookie是由伺服器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給伺服器(前提是瀏覽器設置為啟用cookie)。Cookie名稱和值可以由伺服器端開發自己定義,對於JSP而言也可以直接寫入jsessionid,這樣伺服器可以知道該用戶是否合法用戶以及是否需要重新登錄等,伺服器可以設置或讀取Cookies中包含信息,藉此維護用戶跟伺服器會話中的狀態。
1.獲取Cookie的值:獲取Cookie值的標准代碼格為:myCookie.Values["auth"];
上句代碼可以獲取名為myCookie的Cookie對象鍵名為auth的鍵值。如果不存在,則返回null。
DateTime now=new DateTime.Now;
Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1);
//設定Cookie過期時間下面的代碼示例演示刪除應用程序中所有可用 Cookie 的一種方法
2.代碼如下:
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(aCookie);
}
『伍』 Web前端新手應該了解的Cookie知識!
今天小編要跟大家分享的文章是關於Web前端新手應該了解的Cookie知識。正准備學習Web前端知識和准備從事Web
前端工作的小夥伴怎麼能不了解Cookie。今天小編就為大家帶來了這篇文章,讓我們一起來看一看Web前端新手應該了解的Cookie知識。
一、Cookie的出現
瀏覽器和伺服器之間的通信少不了HTTP協議,但是因為HTTP協議是無狀態的,所以伺服器並不知道上一次瀏覽器做了什麼樣的操作,這樣嚴重阻礙了互動式Web
應用程序的實現。
針對上述的問題,網景公司的程序員創造了Cookie。
二、Cookie的傳輸
伺服器端在實現Cookie標準的過程中,需要對任意HTTP請求發送Set-CookieHTTP頭作為響應的一部分:
1.Set-Cookie:name=value;expires=Tue,03-Sep-201914:10:21GMT;path=/;
domain=.#;
瀏覽器端會存儲這樣的Cookie,並且為之後的每個請求添加CookieHTTP請求頭發送回伺服器:
1.Cookie:name=value
伺服器通過驗證Cookie值,來判斷瀏覽器發送請求屬於哪一個用戶。
三、瀏覽器中的Cookie
瀏覽器中的Cookie主要由以下幾部分組成:
·名稱:Cookie唯一的名稱,必須經過URL編碼處理。(同名會出現覆蓋的情況)
·值:必須經過URL編碼處理。
·域(domain):默認情況下cookie在當前域下有效,你也可以設置該值來確保對其子域是否有效。
·路徑(path):指定Cookie在哪些路徑下有效,默認是當前路徑下。
·
失效時間(expires):默認情況下,瀏覽器會話結束時會自動刪除Cookie;也可以設置一個GMT格式的日期,指定具體的刪除日期;如果設置的日期為以前的日期,那麼Cookie會立即刪除。
·安全標志(secure):指定之後只允許Cookie發送給https協議。
瀏覽器在發送請求時,只會將名稱與值添加到請求頭的Cookie欄位中,發送給服務端。
瀏覽器提供了一個非常蹩腳的API來操作Cookie:
1.document.cookie
通過上述方法可以對該Cookie進行寫操作,每一次只能寫入一條Cookie字元串:
1.document.cookie='a=1;secure;path=/'
通過該方法還可以進行Cookie的讀操作:
1.document.cookie//"a=1"
由於上述方法操作Cookie非常的不直觀,一般都會寫一些函數來簡化Cookie讀取、設置和刪除操作。
對於Cookie的設置操作中,需要以下幾點:
對於名稱和值進行URL編碼處理,也就是採用JavaScript中的encodeURIComponent()方法;
expires要求傳入GMT格式的日期,需要處理為更易書寫的方式,比如:設置秒數的方式;注意只有的屬性名的secure;
每一段信息需要採用分號加空格。1.functionsetCookie(key,value,attributes){
2.if(typeofdocument==='undefined'){
3.return
4.}
5.attributes=Object.assign({},{
6.path:'/'
7.},attributes)
8.
9.let{domain,path,expires,secure}=attributes
10.
11.if(typeofexpires==='number'){
12.expires=newDate(Date.now()+expires*1000)
13.}
14.if(expiresinstanceofDate){
15.expires=expires.toUTCString()
16.}else{
17.expires=''
18.}
19.
20.key=encodeURIComponent(key)
21.value=encodeURIComponent(value)
22.
23.letcookieStr=`${key}=${value}`
24.
25.if(domain){
26.cookieStr+=`;domain=${domain}`
27.}
28.
29.if(path){
30.cookieStr+=`;path=${path}`
31.}
32.
33.if(expires){
34.cookieStr+=`;expires=${expires}`
35.}
36.
37.if(secure){
38.cookieStr+=`;secure`
39.}
40.
41.return(document.cookie=cookieStr)
42.}
Cookie的讀操作需要注意的是將名稱與值進行URL解碼處理,也就是調用JavaScript中的decodeURIComponent()方法:1.functiongetCookie(name){
2.if(typeofdocument==='undefined'){
3.return
4.}
5.letcookies=[]
6.letjar={}
7.document.cookie&&(cookies=document.cookie.split(''))
8.
9.for(leti=0,max=cookies.length;i
10.let[key,value]=cookies[i].split('=')
11.key=decodeURIComponent(key)
12.value=decodeURIComponent(value)
13.jar[key]=value
14.if(key===name){
15.break
16.}
17.}
18.
19.returnname?jar[name]:jar
20.}
最後一個清除的方法就更加簡單了,只要將失效日期(expires)設置為過去的日期即可:1.functionremoveCookie(key){
2.setCookie(key,'',{expires:-1})
3.}
介紹Cookie基本操作的封裝之後,還需要了解瀏覽器為了限制Cookie不會被惡意使用,規定了Cookie所佔磁碟空間的大小以及每個域名下Cookie的個數。
四、服務端的Cookie
相比較瀏覽器端,服務端執行Cookie的寫操作時,是將拼接好的Cookie字元串放入響應頭的Set-Cookie欄位中;執行Cookie的讀操作時,則是解析HTTP請求頭欄位Cookie中的鍵值對。
與瀏覽器最大的不同,在於服務端對於Cookie的安全性操碎了心
signed
當設置signed=true時,服務端會對該條Cookie字元串生成兩個Set-Cookie響應頭欄位:
1.Set-Cookie:lastTime=2019-03-05T14:31:05.543Z;path=/;httponly
2.Set-Cookie:lastTime.sig=URXREOYTtMnGm0b7qCYFJ2Db400;path=/;
httponly
這里通過再發送一條以.sig為後綴的名稱以及對值進行加密的Cookie,來驗證該條Cookie是否在傳輸的過程中被篡改。
httpOnly
服務端Set-Cookie欄位中新增httpOnly屬性,當服務端在返回的Cookie信息中含有httpOnly欄位時,開發者是不能通過JavaScript來操縱該條Cookie字元串的。
這樣做的好處主要在於面對XSS(Cross-sitescripting)攻擊時,黑客無法拿到設置httpOnly欄位的Cookie信息。
此時,你會發現localStorage相比較Cookie,在XSS攻擊的防禦上就略遜一籌了。sameSite
在介紹這個新屬性之前,首先你需要明白:當用戶從#發起#的請求也會攜帶上Cookie,而從#攜帶過來的Cookie稱為第三方Cookie。
雖然第三方Cookie有一些好處,但是給CSRF(Cross-siterequestforgrey)攻擊的機會。
為了從根源上解決CSRF攻擊,sameSite屬性便閃亮登場了,它的取值有以下幾種:
·
strict:瀏覽器在任何跨域請求中都不會攜帶Cookie,這樣可以有效的防禦CSRF攻擊,但是對於有多個子域名的網站採用主域名存儲用戶登錄信息的場景,每個子域名都需要用戶重新登錄,造成用戶體驗非常的差。
·lax:相比較strict,它允許從三方網站跳轉過來的時候使用Cookie。
為了方便大家理解sameSite的實際效果,可以看這個例子:1.//#服務端會在訪問頁面時返回如下Cookie
2.cookies.set('foo','aaaaa')
3.cookies.set('bar','bbbbb')
4.cookies.set('name','cccccc')
5.
6.//#服務端會在訪問頁面時返回如下Cookie
7.cookies.set('foo','a',{sameSite:'strict'})
8.cookies.set('bar','b',{sameSite:'lax'})
9.cookies.set('baz','c')
如何現在用戶在#中點擊鏈接跳轉到#,它的請求頭是這樣的:1.RequestHeaders
2.
3.Cookie:bar=b;baz=c
五、網站性能優化
Cookie在服務端和瀏覽器的通信中,主要依靠HTTP的響應頭和請求頭傳輸的,所以Cookie會占據一定的帶寬。
前面提到瀏覽器會為每一次HTPP請求自動攜帶上Cookie信息,但是對於同站內的靜態資源,伺服器並不需要處理其攜帶的Cookie,這無形中便浪費了帶寬。
在最佳實踐中,一般都會將靜態資源部署到獨立的域名上,從而可以避免無效Cookie的影響。
以上就是小編今天為大家分享的關於Web前端新手應該了解的Cookie知識,希望本篇文章能夠對正在從事Web前端工作和准備從事Web
前端學習的小夥伴們有所幫助。想要了解更多Web前端相關知識記得關注北大青鳥Web培訓官網!
作者|descire
來源|#/article/286535
*聲明:內容與圖片均來源於網路(部分內容有修改),版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜
『陸』 ajax請求的時候怎麼使cookie值顯示
這是供後台程序使用的session變數值,前端是不能直接顯示,也不能修改的,數據本身也是加密的。同一客戶端(瀏覽器)對這個網站的訪問都會自動帶上這個變數值(也就是說它跟你的ajax請求是沒有直接關系的)的。只有後台程序把這個session值的內容通過正常途徑返回給前端才能看到的,也只有後台程序才能修改這個值。
『柒』 怎麼看爬取的網頁是否需要cookie
如果你在登錄階段沒有問題,可以登錄成功,那麼可以這樣獲取Cookie:cookies=httpClient.getState().getCookies();然後在請求別的網頁時帶上這個cookie就行了。
『捌』 js或者jquery判斷用戶cookie是否存在
jquery的$.cookie("cookie名稱");判斷是否為空就可以了
『玖』 怎麼一個網站有判斷cookies注入
1.尋找形如「.asp?id=xx」類的帶參數的URL。
2.去掉「id=xx」查看頁面顯示是否正常,如果不正常,說明參數在數據傳遞中是直接起作用的。
3.清空瀏覽器地址欄,輸入「javascript:alert(document.cookie="id="+escape("xx"));」,按Enter鍵後彈出一個對話框,內容是「id=xx」,然後用原來的URL刷新頁面,如果顯示正常,說明應用是用Request("id")這種方式獲取數據的。
4.重復上面的步驟,將常規SQL注入中的判斷語句帶入上面的URL:「javascript:alert(document.cookie="id="+escape("xx and 1=1"));」
「javascript:alert(document.cookie="id="+escape("xx and 1=2"));」。
和常規SQL注入一樣,如果分別返回正常和不正常頁面,則說明該應用存在注入漏洞,並可以進行cookie注入。
5.使用常規注入語句進行注入即可。
『拾』 js fetch函數怎麼鎐ookie,並且下次請求時帶 cookie 訪問
只要後台設置了cookie,並且設置了有效的過期時間和路徑,前端請求會自動帶上cookie,但是fetch請求默認是不帶cookie的,只要在請求中加上credentials參數就行了