有效 Cookie 值的明确指南

2023-11-24

我知道还有其他问题,但他们的答案似乎是假设而不是确定的。

我有限的理解是cookie值是:

  • 分号已用于分隔单个 cookie 中的 cookie 属性。
  • 等号用于分隔 cookie 名称和值
  • 冒号用于分隔标头中的多个 cookie。

还有其他“特殊”角色吗?

其他一些问答建议使用一个 base64 编码该值,但这当然可能包含等号,这当然是无效的。

我还看到一些建议,可以引用价值观,但这会导致其他问题。

  • 特殊字符需要加引号吗?
  • 带引号的值是否支持通常的反斜杠转义机制。

RFC 我读了一些 RFC,包括许多 cookie RFCS 中的一些,但我仍然不确定,因为存在对另一个 RFC 等的交叉引用,没有明确的简单解释或“回答”我的查询的示例。

希望没有人会说阅读 RFC,因为问题是哪个 RFC...?

我想我还读到不同的浏览器有稍微不同的规则,所以希望如果这很重要,请在您的答案中注意这一点。


最新的 RFC 是6265,并且它指出以前的 Cookie RFC 已过时。

RFC 中的语法规则如下:

 cookie-pair       = cookie-name "=" cookie-value
 cookie-name       = token
 cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
 cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                       ; US-ASCII characters excluding CTLs,
                       ; whitespace DQUOTE, comma, semicolon,
                       ; and backslash

Thus:

  • 特殊字符包括空白字符、双引号、逗号、分号和反斜杠。等于不是特殊字符。

  • 根本不能使用特殊字符,但值周围可以用双引号引起来。

  • 特殊字符不能加引号。

  • 反斜杠不能充当转义符。

由此可见,可以使用base-64编码,因为equals并不特殊。

最后,据我所知,定义了 RFC 6265 cookie 值,以便它们可以与实现任何 Cookie RFC 的任何浏览器一起使用。但是,如果您尝试使用不符合 RFC 6265(但确实符合早期 RFC)的 cookie 值,您可能会发现 cookie 行为因浏览器的不同而异。

简而言之,只要符合 RFC 6265 的规定就可以了。

如果您需要传递包含任何禁止字符的 cookie 值,您的应用程序需要对这些值进行自己的编码和解码;例如使用base64。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有效 Cookie 值的明确指南 的相关文章

  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 在express js中禁用http方法

    我正在我的 Express 应用程序上进行 nessus 测试 这是我得到的 基于每种方法的测试 HTTP 方法 ACL CHECKOUT COPY DELETE GET HEAD LOCK MERGE MKACTIVITY MKCOL 移
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • 虽然我的类已加载,但 Class.forName 抛出 ClassNotFoundException

    代码如下 它的作用是加载我放在主目录中的 jar 文件中的所有类 import java io File import java util jar JarFile import java util jar JarEntry import j
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 如何在Java中对对象数组进行字段级别排序以进行等级比较?

    In Java Class StudentProgress String Name String Grade CTOR goes here main class main method StudentProgress arrayofObje
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • 以 REST 方式更新整个资源集合

    我有一个资源列表的 REST URI 例如 http foo com group users 这些用户中的每一个都有一个序列号 我想公开一种方法来为集合中的所有用户重新编号这些值 并使访问该列表的每个人都可以使用此更改 由于这是对整个集合的
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • MVC Html.ActionLink 从 URL 中删除空查询字符串参数

    我正在使用Html ActionLink string linkText string actionName object routeValues 重载以将一些参数发送到操作方法 有时我需要传递一个空参数值 例如 item1 item2 v
  • 如何从reactjs组件访问“key”属性

    我怎样才能访问key组件的属性 我以为它会在 this props 中 但事实并非如此 e g
  • 如何使用 ConstraintLayout 设置 DimensionRatio 的 maxHeight?

    我正在尝试显示以父级为中心的图像 尺寸比为 1220 1000 最大高度为 300dp 即使在大屏幕下也能保持图像较小
  • 在 C# 中哪里可以找到机器 epsilon?

    机器 epsilon 被规范地定义为与 1 相加得到的结果与 1 不同的最小数字 有一个Double Epsilon但这个名字很容易让人误解 它是最小的 非规范化的 Double值可表示 因此对于任何类型的数字编程都是无用的 我想得到tru
  • 从图像中查找车辆的速度

    我正在做一个项目 从图像中查找车辆的速度 我们正在车内拍摄这些图像 我们将标记第一张图像中的一些对象作为参考 利用下一张图像中同一物体的属性 我们必须计算移动车辆的速度 有人能帮我一下吗 我正在使用 python opencv 我已经成功
  • 将 XSLT 2.0 与 PHP 结合使用的最佳方法是什么?

    这是我在网站上的第二个问题 像往常一样 我花了几个小时阅读了很多相关问题 最相关的两个是 XPath 2 0 和 或 XSLT 2 0 是否会在 PHP 中实现 其中解释了使用 PHP Java Bridge 和 Saxon 的解决方案 A
  • 为什么 babel 将导入的函数调用重写为 (0, fn)(...) ?

    给定一个输入文件 例如 import a from b function x a babel 会将其编译为 use strict var b require b function x 0 b a 但是当以松散模式编译时 函数调用输出为 b
  • WaitForSingleObject - 等待的线程是否形成队列?

    如果我设置 3 个线程来等待互斥锁被释放 它们是根据请求的顺序形成一个队列还是未定义的行为 即我们不知道哪个线程会先获取它 它明确记录在SDK文章 如果多个线程正在等待互斥体 则选择一个等待线程 不要假设先进先出 FIFO 顺序 外部事件
  • 如何在 iPhone 上使用滚动视图?

    我想显示包含很多行的文本 我向滚动视图添加了多行标签 但它没有显示任何内容 看起来这不是使用滚动视图的正确方法 如何使用滚动视图以便用户可以向下拖动以查看更多文本 Apple s UIScollView 文档相当不错 你应该从那里开始并理解
  • 通过 JNI 更快的 Math.exp() ?

    我需要计算Math exp 非常频繁地从 java 中获取 是否有可能让本机版本运行得比java s Math exp 我只尝试了 jni C 但它比普通的慢java 这已经被多次请求 参见例如here 这是 Math exp 的近似值 复
  • LINQ 可以在 PowerShell 中使用吗?

    我正在尝试在 PowerShell 中使用 LINQ 看起来这应该是完全可能的 因为 PowerShell 是构建在 NET Framework 之上的 但我无法让它工作 例如 当我尝试以下 人为的 代码时 data 0 10 System
  • 如何使用多个 WCF 服务实例强制执行消息队列顺序

    我想创建一个使用 MSMQ 绑定的 WCF 服务 因为该服务要处理大量通知 重要的是 客户端不会被服务阻塞 并且通知按照它们发出的顺序进行处理 因此队列实现也是如此 另一个考虑因素是弹性 我知道我可以对 MSMQ 本身进行集群以使队列更加健
  • Apache Spark:使用文件夹结构来减少分析的运行时间

    我想通过将一个巨大的 csv 文件根据其特征细分为不同的分区来优化 Spark 应用程序的运行时 例如 我有一个包含客户 ID 的列 整数 a 一个包含日期的列 月 年 例如 01 2015 b 以及一个包含产品 ID 的列 整数 c 以及
  • Mockito / Powermockito 模拟私有 void 方法

    我需要使用mockito和powermock模拟一个不带参数的私有void方法 该方法属于一个间谍实例 我知道我需要这样做的事实表明代码很糟糕 但我正在处理一个旧项目 将单元测试从一个测试框架转换为另一个测试框架 如果有人有任何建议 我们将
  • 在 Windows 7 64 位上安装 pycuda-2013.1.1

    仅供参考 我有 64 位版本的 Python 2 7 和 我跟着pycuda安装说明安装pycuda 我运行以下脚本没有任何问题 import pycuda driver as cuda import pycuda autoinit fro
  • 在 Rmarkdown HTML 输出中禁止来自 RStan 的运行消息

    以下是我的 r 代码 r message FALSE warning FALSE cache 0 eval TRUE error FALSE stan m1 lt rethinking map2stan alist y dbinom n p
  • 如何创建紧凑型材

    我在谷歌上搜索找到一种在 Java 1 8 中创建紧凑配置文件的方法 是否可以创建紧凑配置文件 因为Here说它仅适用于嵌入式版本 简短回答 JEP 161说配置文件必须在 Java 8 中 确实如此 要创建它们 请使用make profi
  • 尝试使用 numpy 向量化迭代计算

    我试图通过使用 numpy 中的向量化形式来使某些代码更有效 让我给你举个例子 这样你就明白我的意思了 给出以下代码 a np zeros 4 4 a 0 1 2 3 4 for i in range len a 1 a i 1 2 a i
  • 通过 Rails 迁移添加数据库列并基于另一列填充它

    我正在编写一个迁移以向表中添加一列 该列的值取决于另外两个现有列的值 最好 最快的方法是什么 目前我有这个 但不确定这是否是最好的方法 因为组表可能非常大 class AddColorToGroup lt ActiveRecord Migr
  • 有效 Cookie 值的明确指南

    我知道还有其他问题 但他们的答案似乎是假设而不是确定的 我有限的理解是cookie值是 分号已用于分隔单个 cookie 中的 cookie 属性 等号用于分隔 cookie 名称和值 冒号用于分隔标头中的多个 cookie 还有其他 特殊