无法通过document.cookie获取到cookie,但是却可以在控制台看到。

刚刚发现的一个问题,发现document.cookie无法获取到某些cookie。

主要原因是因为cookie的一个属性,httponly !,该cookie是从后端设置的,所以为了安全问题,设为了true,但也带来了一个问题,无法通过js脚本来获取该cookie,只能看得到,但是你获取不到。

目前可以通过将httponly 设为false来进行获取,可以通过在控制台将httponly单选框取消勾选尝试刷新页面。

 setcookie 第七个属性就是设置 httponly 的,设置后无法通过 js 脚本获取。

但是虽然设置了httponly为true,网络请求还是可以正常携带发送的,因为这个属性本质上就是为了防止一些脚本和xss攻击的。

下面为cookie的七个属性:

Cookie名称(必填)Cookie名称必须使用只能用在URL中的字符,一般用字母及数字,不能包含特殊字符,如有特殊字符想要转码。如js操作cookie的时候可以使用escape()对名称转码。
Cookie值(必填)Cookie值同理Cookie的名称,可以进行转码和加密。
Expires(非必填)过期日期,一个GMT格式的时间,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器关闭后消失。
Path(非必填)一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie。
Domain(非必填)子域,指定在该子域下才可以访问Cookie,例如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可将domain设置成a.test.com。
Secure(非必填)安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时cookie才可以被页面访问
HttpOnly(非必填)如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息。
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Unity中打包WebGL时,你可以通过编写自定义的JavaScript库(.jslib)来获取浏览器的Cookie。下面是一个简单的示例: 首先,在Unity项目中创建一个名为"Plugins"的文件夹(如果没有的话)。 然后,创建一个新的JavaScript文件,比如"CookieUtils.js",将以下代码粘贴到文件中: ```javascript mergeInto(LibraryManager.library, { GetCookieValue: function(cookieName) { var cookieValue = null; var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); if (cookie.indexOf(cookieName + '=') === 0) { cookieValue = cookie.substring(cookieName.length + 1, cookie.length); break; } } return cookieValue; } }); ``` 这段代码定义了一个名为"GetCookieValue"的函数,用于获取指定名称的Cookie的值。 保存文件,并将其放入"Plugins"文件夹中。 接下来,在C#脚本中调用这个JavaScript函数。创建一个新的C#脚本,比如"CookieManager.cs",并在其中添加以下代码: ```csharp using UnityEngine; using System.Runtime.InteropServices; public class CookieManager : MonoBehaviour { [DllImport("__Internal")] private static extern string GetCookieValue(string cookieName); void Start() { string cookieValue = GetCookieValue("yourCookieName"); Debug.Log("Cookie value: " + cookieValue); } } ``` 这段代码使用了DllImport特性,用于从JavaScript库中调用"GetCookieValue"函数。 请确保将"yourCookieName"替换为你想要获取Cookie的名称。 现在,将"CookieManager"脚本附加到一个游戏对象上,并运行WebGL构建。 在浏览器的开发者控制台或Unity的控制台中,你应该能够看到输出的Cookie值。 这样,你就可以通过.jslib获取浏览器的Cookie了。请注意,这只适用于WebGL平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值