精华内容
下载资源
问答
  • cookie多个key

    千次阅读 2019-04-18 14:36:19
    cookie多个值 前言 写一些吐槽, 由于看红皮书的时候 cookie那一章只是大概看了看, 在项目设置cookie多个值的时候, 发现只能存一个key,value, 后来看了大量文章后发现,竟然大多都是错的,谁教你的不...

                                         cookie存多个值

     

     

     

    正题 

     cookie存单个值 并设置过期时间 是可以 name=‘xxx’;expires=‘xxxx’ 这么写的, 但是如果要存多个值,请把你需存的值 放在字符串中编译一下然后 在放到 name=‘你编译的内容’;expires=‘xxxx’;  如果你要删除cookie 那么name=‘’;expires=‘随便一个过期时间’ 

    export default {
      setCookie(info, expires) {
        console.log(info);
        if (expires) {
          expires = new Date(
            new Date().getTime() + parseInt(expires) * 24 * 60 * 60 * 1000
          );
        }
        if (info) {
          let userName = info.userName;
          let password = info.password;
          let zone = info.zone;
          let content = `userName=${userName};password=${password};zone=${zone};`;
          
          console.log(escape(content))
          document.cookie = 'token='+ escape(content) +`;${
            expires ? 'expires=' + expires : ''
          }`;
          console.log(document.cookie)
        }
      },
      delCookie() {
        let expires = new Date(new Date().getTime() - 24 * 60 * 60 * 1000);
        document.cookie = `token=''; expires=${expires}`;
      },
      getCookie() {
        console.log(document.cookie);
      }
    };

    token=userName%3D%u674E%u56DB%3Bpassword%3D11111111%3Bzone%3D1%3B

    展开全文
  • 使用Cookie记住多个登录账号!

    千次阅读 2018-05-20 01:55:43
    看下图:只要是多个不同的用户在这台电脑上用了他们的账号登录成功了,就记住他们...可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为了偷懒简单点,我...

    看下图:只要是多个不同的用户在这台电脑上用他们的账号登录成功了,就记住他们的账号信息,但是为了安全起见,密码就不写入到Cookie中了,就算是加密了的密码也不要写入到Cookie中!我们只向Cookie中写入账号!然后用下拉列表框把这些登录成功了的账号加载出来!


    可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为了偷懒简单点,我这里暂时不用json格式了,就使用-中划线分隔

    rememberUserNameCookie.jsp页面
    <%@page import="java.util.Date"%>
    <%@page import="java.text.SimpleDateFormat"%>
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>登录页面,把用户名写入到Cookie中,使用Cookie记住用户名</title>
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/body.css">
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/mark.css">
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/console.css">
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/console.js"></script>
    </head>
    <body>
    <center>
    	<h1>登录页面,把用户名写入到Cookie中,使用Cookie记住用户名</h1>
    	<h2>可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为了偷懒简单点,我这
    		里暂时不用json格式了,就使用-中划线分隔
    		</h2>
    		<h4>1.
    			记住用户名(如果在同一个浏览器中,有多个用户使用不同的用户名登录网站,我们要把这些用户名都记住,下次网站的登录页面用下拉列表框加载这些用户名)
    			为了安全考虑,我们只记住用户名,不记住密码,就算是加密了的密码我们也不要记住(如果时间充裕的话,把记住多长时间的功能也做一下,可以让用户自己勾
    			选,勾选记住1分钟,记住1周,记住1年等等)</h4>
    			<h4>
    			2.Cookie的名字是可以一样的,只要是不同的Web应用程序就可以,浏览器不会混淆这些相同名称的Cookie,因为domain(域)不一样。如
    			果是同一个Web应用程序中,Cookie的名字如果一样的话,会覆盖掉同名的Cookie</h4>
    		<input type="button" value="关闭本页面" οnclick="closeMe()">
    		<%
    			Date now = new Date();
    			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:sss");
    			out.print("<h2>当前时间:" + df.format(now) + "</h2>");
    		%>
    
    		<%
    			Cookie[] cookies = request.getCookies();
    			boolean flag = false;
    			Cookie accountCookie = null;
    			if (cookies != null) {
    				for (Cookie cookie : cookies) {
    					String cookieName = cookie.getName();
    					if ("account".equals(cookieName)) {
    						// 有名字叫account的Cookie
    						flag = true;
    						accountCookie = cookie;
    						break;
    					}
    				}
    				if (flag) {
    					String cookieValue = accountCookie.getValue();
    					String[] accounts = cookieValue.split("-");
    					//将Cookie中的用户名数组设置到request作用域范围中
    					request.setAttribute("accounts", accounts);
    					
    					for (int index = 0; index < accounts.length; index++) {
    						System.out.println("我是rememberUserNameCookie.jsp页面,用户名:" + accounts[index]);
    					}
    				}
    			}
    		%>
    		<h3><font color="red">测试的时候,尽量使用英文来测试,暂时别使用中文测试</font></h3>
    		<form action="${pageContext.request.contextPath}/Login" method="get">
    		用户名(账号):<input type="text" id="userName" name="account"><br><br>
    		在此台电脑上登录过的用户列表:
    		<c:if test="${empty requestScope.accounts}" var="result">
    		<input type="text" id="userName" name="account"><br><br>
    		</c:if>
    		<c:if test="${!result}">
    		<select name="account">
    		<c:forEach var="account" items="${requestScope.accounts}">
    		<option value="${account}">${account}</option>
    		</c:forEach>
    		</select><br><br>
    		</c:if>
    		密码:<input type="password" id="password" name="password"><br><br>
    			记住用户名<input type="checkbox" id="isRemember" name="isRemember" οnclick="rememberUserName()">
    			    
    			<!-- visibility: hidden;仍然会占位置,display: none;不会占位置 -->
    			<span id="rememberTimeSpan" style="display: none;">
    			1分钟<input type="radio" name="rememberTime" value="60">    
    			1周<input type="radio" name="rememberTime" value="604800">    
    			1年<input type="radio" name="rememberTime" value="31536000">    
    			</span>
    			<br><br>
    			<input type="submit" value="写入Cookie">
    		</form>
    	</center>
    	<c:forEach begin="0" end="10" varStatus="statu">
    	下标索引:${statu.index} -数量:${statu.count}<br>
    	</c:forEach>
    	<hr>
    	<c:forEach var="s" begin="1" end="30">
    		${s} 
    </c:forEach>
    
    <br><br>
    <center>
    <h2>使用javaScript编写带编辑输入功能的下拉列表框</h2>
    <input type="button" value="显示下拉列表框中的值" οnclick="showSelectNodeValue()">
    <input name="homeTown" type="text" id="inputAndEdit" style="width:121px;position: absolute;"/>
    <select οnchange="document.getElementById('inputAndEdit').value=this.options[this.selectedIndex].value" style="width:138px;clip: rect(auto auto auto 120px); position: absolute">
    
    <option value=""></option>
    <option value="于都县">江西省赣州市于都县</option>
    <option value="兴国县">江西省赣州市兴国县</option>
    <option value="会昌县">江西省赣州市会昌县</option>
    <option value="赣县">江西省赣州市赣县</option>
    
    </select>
    <br><br>
    <div id="showWindowInfo" class="testDiv3" style="height: auto;">
    Window对象中的属性和方法和子对象<br>
    </div>
    </center>
    <br><br><br><br>
    </body>
    <script type="text/javascript">
    
    
    	/*
    	 JavaScript中定义数组的三种方式
    	 第1种
    	 var cars=new Array();
    	 cars[0]="奥迪";
    	 cars[1]="宝马";
    	 cars[2]="兰博基尼";
    	 
    	 第2种
    	 var cars=new Array("奥迪","宝马","兰博基尼");
    	 
    	 第3种
    	 var cars=["奥迪","宝马","兰博基尼"];
    	 */
    
    	
    	//记住用户名
    	function rememberUserName() {
    // 		var time1 = 60;//1分钟(1分钟主要是为了测试)
    // 		var time2 = 7 * 24 * 60 * 60;//7天
    // 		var time3 = 365 * 24 * 60 * 60;//365天
    // 		var rememberAccountTime = new Array();
    // 		rememberAccountTime[0] = time1;
    // 		rememberAccountTime[1] = time2;
    // 		rememberAccountTime[2] = time3;
    		var checkboxNode = document.getElementById("isRemember");
    		var spanNode = document.getElementById("rememberTimeSpan");
    // 		var radioNodes = document.getElementsByName("rememberTime");
    		if (checkboxNode.checked) {
    			spanNode.style.display = "inline";
    // 			for (var index = 0; index < radioNodes.length; index++) {
    // 				radioNodes[index].value = rememberAccountTime[index];
    // 			}
    		} else {
    			spanNode.style.display = "none";
    			// 			for (var index = 0; index < radioNodes.length; index++) {
    			// 				radioNodes[index].checked = false;
    			// 			}
    		}
    	}
    	 
    	 function showSelectNodeValue(){
    		 var inputNode = document.getElementById("inputAndEdit");
    		 alert(inputNode.value);
    	 }
    	 
    	 function closeMe(){
    		 window.location.href="about:blank";
    		 window.close();
    	 }
    	 
    	 var divNode = document.getElementById("showWindowInfo");
    	 for(var nodeInfo in window){
    		 divNode.innerHTML += nodeInfo + "<br>";
    		}
    	 
    </script>
    </html>

    名字叫Login的servlet

    package com.jiongmeng.servlet;
    
    import java.io.IOException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 测试把用户名写入Cookie中
     */
    @WebServlet("/Login")
    public class Login extends HttpServlet {
    	private static final long serialVersionUID = 1L;
       
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		// 把用户名写入Cookie中,所以我这里只获取用户名,就不获取密码了
    		String account = request.getParameter("account");
    		
    		//注意:写入和读取Cookie时,如果有中文,容易导致报错
    		account = URLEncoder.encode(account, "utf-8");
    		
    		// 是否记住用户名(账号)的标识 (如果checkbox的value值没有写,那么获取checkbox的value时,就会得到on)
    		String isRemember = request.getParameter("isRemember");
    		System.out.println("是否记住用户名(账号)标识" + isRemember);
    		if (isRemember != null) {// 复选框勾选了记住用户名
    			//记住用户名的时间
    			String rememberTime = request.getParameter("rememberTime");
    			if (rememberTime != null) {
    				int rememberTime_int = Integer.parseInt(rememberTime);
    				System.out.println("记住账号时间" + rememberTime_int);
    				Cookie cookie = new Cookie("account", account);
    //				 cookie.setMaxAge(2 * 365 * 24 * 60 * 60); //在客户端(浏览器)中保存2年
    				cookie.setMaxAge(rememberTime_int); // 设置在客户端(浏览器)中保存的时间
    				response.addCookie(cookie); // 写COOKIE
    			}
    			
    		}
    		
    		
    		// 使用javascript无法读取HttpOnly=true的cookie,安全性更高
    		// 在cookie中设置了HttpOnly属性=true,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击
    		// javascript无法读取到HttpOnly=true的cookie信息,但是服务器端仍然可以使用java语言读取到cookie信息
    		// cookie.setHttpOnly(true);
    		
    //		showCookies(request, response);
    		
    		setCookies(request, response);
    		//转发
    //		request.getRequestDispatcher("/rememberUserNameCookie.jsp").forward(request, response);
    		//重定向
    		response.sendRedirect(request.getContextPath() + "/rememberUserNameCookie.jsp");
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    	
    	protected void showCookies(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Cookie[] cookies = request.getCookies();
    		if (cookies != null) {
    			for (Cookie cookie : cookies) {
    				String cookieName = cookie.getName();
    				String cookieValue = cookie.getValue();
    				cookieValue = URLDecoder.decode(cookieValue, "utf-8");
    				System.out.println("cookieName=" + cookieName + " cookieValue=" + cookieValue);
    			}
    		}
    	
    	}
    	
    	protected void setCookies(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		Cookie[] cookies = request.getCookies();
    		boolean flag = false;
    		Cookie accountCookie = null;
    		if (cookies != null) {
    			for (Cookie cookie : cookies) {
    				String cookieName = cookie.getName();
    				if ("account".equals(cookieName)) {
    					// 有名字叫account的Cookie
    					flag = true;
    					accountCookie = cookie;
    					break;
    				}
    			}
    			if (flag) {
    				String cookieValue = accountCookie.getValue();
    				System.out.println("*********" + cookieValue + "*********");
    
    				/**
    				 * 可以使用json格式保存多个用户名,写入到Cookie中,到时候可以读取出该Cookie,使用下拉列表显示多个用户名,为
    				 * 了偷懒简单点,我这里暂时不用json格式了,就使用-中划线分隔
    				 */
    System.out.println("account=" + request.getParameter("account") + "=======================");
    				cookieValue += "-" + request.getParameter("account");
    				System.out.println("------" + cookieValue + "------");
    				String isRemember = request.getParameter("isRemember");
    				if (isRemember != null) {// 复选框勾选了记住用户名
    					// 记住用户名的时间
    					String rememberTime = request.getParameter("rememberTime");
    					if (rememberTime != null) {
    						int rememberTime_int = Integer.parseInt(rememberTime);
    						Cookie cookie = new Cookie("account", cookieValue);
    						cookie.setMaxAge(rememberTime_int); // 设置在客户端(浏览器)中保存的时间
    						response.addCookie(cookie); // 写COOKIE
    					}
    				}
    			}
    		}
    	}
    	
    }
    

    展开全文
  • 多个值存储到一个cookie

    千次阅读 2016-05-09 18:00:20
    就是把多个值用一个特殊字符连接起来,(特殊字符就是为了截取字符),然后用一个键来存储连接的字符串。 用document.cookie直接获取cookie的内容 var textName = document....

    首先存储在一块的数值应该是相关联的。就是把多个值用一个特殊字符连接起来,(特殊字符就是为了截取字符),然后用一个键来存储连接的字符串。

    用document.cookie直接获取cookie的内容

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<input type="text" id="textId" />
    		<input type="text" id="passId" />
    		<input type="button" id="btnId"  value="添加"/>
    		<input type="button" id="deleId" value="删除"/>
    	</body>
    	<script type="text/javascript">
    		var textName = document.getElementById("textId");
    		var pass = document.getElementById("passId");
    		var btn = document.getElementById("btnId");
    		var dele = document.getElementById("deleId");
    		
    		btn.onclick = function (){
    			namePass=textName.value+"&"+pass.value;
    			document.cookie = "namePass="+namePass;
    		}
    		dele.onclick = function (){
    			var names = document.cookie.split("="); // 获取cookie中的内容然后进行截取字符串
    			var namess = names[1].split("&");
    			alert(namess[0])
    			alert(namess[1])
    		}
    	</script>
    </html>
    


    展开全文
  • 在网上搜索了很多JS cookie保存多个参数的写法,大多数都是用字符串通过分号隔开保存,试验之后发现满足不了要求,我保存多个参数,最终读取时只有一个参数, 于是又找到下面这种方法:cookie改变它的赋值并不意味着...

    在网上搜索了很多JS cookie保存多个参数的写法,大多数都是用字符串通过分号隔开保存,试验之后发现满足不了要求,

    我保存多个参数,最终读取时只有一个参数, 于是又找到下面这种方法:

    cookie改变它的赋值并不意味着丢失原来的值:

       document.cookie = "provinceId=" + escape(areaData.provinceId);

       等同于  document.addcookie 

    ///在 cookie 变量中存储

    function setAreaCookie(areaData, expiredays) {
        var exdate = new Date()
        exdate.setDate(exdate.getDate() + expiredays)
        //cookie改变它的赋值并不意味着丢失原来的值
        document.cookie = "provinceId=" + escape(areaData.provinceId);
        document.cookie = "cityId=" + escape(areaData.cityId);
        document.cookie = "distId=" + escape(areaData.distId);
        document.cookie = "streetId=" + escape(areaData.streetId);
        document.cookie = "neighborhoodId=" + escape(areaData.neighborhoodId);
        document.cookie = "expires=" + exdate.toGMTString();

    }

    由于JS cookie 没有直接通过名称取值的方法,于是自己写了一个,通过传入Cookie名称取值的方法:

    //根据名称获得Cookie值
    function GetCookieByName(name) {
        var startIndex = document.cookie.indexOf(name); //开始索引
        if (startIndex > -1) {
            var tempStr = document.cookie.substring(startIndex, document.cookie.length);
            var endIndex = tempStr.indexOf(";")//结束索引:第一个分号 索引
            var item = tempStr.substring(0, endIndex);
            return item.split("=")[1];
        }
        return "";
    }


    我的调用方法:

    ///检查是否已设置 cookie
    function getAreaCookie() {
        var areaData = {
            provinceId: GetCookieByName("provinceId"),
            cityId: GetCookieByName("cityId"),
            distId: GetCookieByName("distId"),
            streetId: GetCookieByName("streetId"),
            neighborhoodId: GetCookieByName("neighborhoodId")
        };
        return areaData;  
    }


    展开全文
  • 同名的cookie会不会存在多个

    千次阅读 2018-05-23 14:58:42
    cookie new了多个。同一个名字。会不会存在多个呢。//若果不设置Cookie的path,则名字相同的Cookie视为相同的Cookie,后面的覆盖前面的,注意:大小写敏感 Cookie c1=new Cookie("name", "v1"); ...
  • 一个站点保存多个cookie

    千次阅读 2016-07-04 10:50:50
    //若果不设置Cookie的path,则名字相同的Cookie视为相同的Cookie,后面的覆盖前面的,注意:大小写敏感 Cookie c1=new Cookie("name", "v1"); Cookie c2=new Cookie("name", "v2"); //若设置了不同的path,即使Cookie...
  • 使用Volley获取多个cookie

    千次阅读 2015-08-06 16:32:46
    问题描述最近接手了一论坛性质的应用,因为流量小,网络请求频繁,所以...重构获取和发送内容部分重构基本能够顺利完成,只剩下cookie难题,网上找了很资料,发现很都是片面一讲,其实说的不对。网上找到的方
  • 如题,很多时候当我们用Http发送请求时,会有多个Cookie,这时该如何获取JSessionid呢?话不多说,直接上代码: static CookieManager cookieManager = new CookieManager(); CookieHandler.setDefault(cookie...
  • 以往在取响应头中的值时都是用到getResponseHeader方法,比如取set-cookie的值,可以通过postman.getResponseHeader("set-cookie")来取值,其中set-cookie不区分大小写,但是如果存在多个set-cookie时,就无法都取到...
  • Cookie

    万次阅读 多人点赞 2019-03-28 15:53:42
    Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie的有效期 Cookie的修改、删除 Cookie的域名 Cookie的...
  • 简单的购物车,正常使用cookie时的代码如下 当客户端cookie被禁用时 方法一:在每超链接上添加一PHPSESSION=sessionID; 同时诶页面加入 if(isset($_GET['PHPSESSION'])) {  session_id($_...
  • 一下是犀牛书中实现的操作cookie的apifunction cookieStorage(maxage, path) { var cookie = (function() { var cookie = {}; var all = document.cookie; if(all == "")
  • android中Webview设置多个cookie参数

    千次阅读 2017-11-01 10:48:12
    有时候需要在cookie中设置多个参数传递给前端页面,常用的是 token和渠道号 。将N个参数的key-value按照分号分开然后一次设置,一直只使用token第一个参数,可以正常获取,所以没问题,比如 StringBuilder sbCookie ...
  • 当遇到返回的response的headers中包含多个Set-Cookie时,如何获取呢? 如果直接用requests模块: #获取响应的cookie html = requests.get(url,headers=Head,verify=False,timeout=maxExcuteTime) ...
  • cookie

    千次阅读 2017-08-13 16:11:32
    cookie的作用:在本地浏览器存储数据。... cookie的组成: 键值对的形势 存储的数据:”userId=123456;psd=123345; phone=1875455” ...有效期:”expires=今天以后的时间” ...存储cookie: ...可以存储多个键值对,
  • 本人在开发过程中遇到一奇怪的问题,采用UIWebView时,用微信授权后进入绑定手机号页面,绑定手机号成功,然后重新生成一页面(UIViewController主页),进入新...网上搜索到的说WKWebView的cookie需要用户注入...
  • 取出响应头中包含多个set-cookie的值

    万次阅读 2017-09-28 19:28:15
    //得到响应头中返回的所有信息,以key-value的形式保存 ... 响应头中,可能会有多个Set-Cookie. 把key=Set-Cookie的都取出来,放到集合里 */ List list = heads.get("Set-Cookie"); //遍历集合,把对应
  • Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=7e...我现在要把多个cookie信息解析出来,通过php写入浏览器cookie。目前不知道怎么把这个header中的cookie拿出来。 如果能转换成一个array就更好了!谢谢各位大牛
  • 二、cookie (1)cookie是什么? HTTP Cookie,通常直接叫做cookie,...浏览器会存储这样的回话信息,并在这之后,通过每请求添加CookieHTTP头将信息发回服务器。 (2)cookie怎么用? 在JavaScript中,coo...
  • iOS 在WKWebView设置多个Cookie(总结我跑过的坑)不废话,1-直接说坑;2-po代码。1-直接说坑2-po代码我是大马猴,希望大家指教切磋### 不废话,1-直接说坑;2-po代码。 1-直接说坑 重点1: 通过字典设置相关参数...
  • 实际应用中,一个会话应该有多个请求,根据HTTP协议无状态的特点,会话中的每个请求之间无法共享数据,但是实际应用,多个请求之间是需要共享数据,因此,我们需要解决解决一个会话多个请求之间如何共享数据的问题 ...
  • 方法:通过重复调用 cookieManager.setCookie(url,cookie1); 来保存多个cookie。 代码: /** * Sync Cookie */ private void syncCookie(Context context, String url){ try{ CookieSyncMana
  • C#一个到多个Cookie的字符串添加到CookieCollection集合中【isGood代码】 浏览量:1851 C#一个到多个Cookie的字符串添加到CookieCollection集合中 多个站点(Domain)与多个路径(Path)与多个Cookie名(c....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 358,367
精华内容 143,346
关键字:

cookie多个