現(xiàn)象:
在測(cè)試帶Cookie的HTTP請(qǐng)求時(shí)發(fā)現(xiàn),服務(wù)端用request.getHeader("cookie")可以去到值; 但是用request.getCookies()卻不行
1
|
Cookie mycookies[] = request.getCookies(); |
中永遠(yuǎn)獲取不到uid的值;(80端口號(hào)除外)
原因:
查了瀏覽器的具體cookie值,發(fā)現(xiàn)
http://localhost:8080/ 訪問(wèn)的時(shí)候,cookie值放在localhost下,服務(wù)器自動(dòng)生成的SESSIONID也是存放在localhost路徑下。
http://127.0.0.1:8080/訪問(wèn)的時(shí)候,cookie uid值放在127.0.0.1:8080下,在127.0.0.1:8080下的cookie服務(wù)端的Servlet永遠(yuǎn)都獲取不到;而服務(wù)器自動(dòng)生成的SESSIONID則是在127.0.0.1下,與uid存放位置不同。
所以在服務(wù)端下發(fā)cookie的時(shí)候,
1
|
String host=request.getHeader( "host" ); |
需要修改為
1
2
3
|
if (host.indexOf( ":" )>- 1 ){ host=host.split( ":" )[ 0 ]; } |
或者放棄設(shè)置
1
|
mycookie.setDomain(host); |
這樣cookie值也是保存在127.0.0.1下的,與端口號(hào)不關(guān)聯(lián)
當(dāng)然是服務(wù)器已經(jīng)有域名的就不會(huì)出現(xiàn)端口號(hào)下獲取不到cookie的值
解決辦法:
1
2
3
|
String cookie=request.getHeader( "cookie" ); Cookie mycookies[] = request.getCookies(); |
加上前面一行后面即可取到,
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!