问题标签 [cookie-httponly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-chrome - Cookie 自动变为 httpOnly
我在 WebSphere 上的 context root 上部署了一个 Web 应用程序/app
。在应用程序内部,有一个 javascript 在加载后立即执行,它看起来像这样:
铬行为
从 DevTools 我可以看到最初foo=bar
创建为非-httpOnly 和 1-2 秒后它自动变为 httpOnly。等待 5 秒左右(只是为了确保)后,第二个 cookie 也被创建,但在非 httpOnly 模式下,最终结果如下所示:
Q1: 为什么 foo=bar 一段时间后变成 httpOnly ?
Q2:为什么这种延迟的 cookie 创建会产生如此大的影响?
我可以说阈值在 700-800 毫秒之间,如果我延迟 cookie 创建的时间小于这个值,它的行为就完全没有延迟。
火狐行为
在这里,如果延迟低于阈值(或没有任何 setTimeout),它会为每个 kay,value 对创建 2 个 cookie,例如:
而在延迟高于阈值的情况下,它不会创建重复的 cookie(对于 baz=qux):
Q3:不说FF为什么会在末尾附加斜线(我听说不同的浏览器对cookie的处理方式不同),为什么延迟cookie创建不是这种情况?
我什至认为应用程序中某处可能有一段脚本在一段时间后将非 httpOnly cookie“覆盖”为 httpOnly 一个,但我不认为是这种情况,因为从控制台执行它不会改变任何东西:
即 baz=qux 保持为非 httpOnly。甚至有人声称这是不可能的
服务器通过响应将 cookie 重置为 httpOnly 并不是一回事,我已经在网络视图中检查了每个请求,并且这些 cookie 不是来自服务器。
我有一种直觉,在这个环境中一定有一些东西,因为我试图创建一个具有类似设置的单独 Spring boot 项目,并且所有 cookie 都保持非 httpOnly。
有任何想法吗?不幸的是,我无法分享真实的代码。如果有人能够至少在理论上解释可能是什么原因,那将非常有帮助。
其他注意事项:
- 这不适用于使用 path=/ 创建的 cookie
- 铬版本:75.0.3770.100
- 火狐版本:67.0.4
- 我正在使用不带任何扩展名的隐身窗口
cookies - 如何访问服务器上的 httponly cookie(由客户端设置)?
我在后端有一个使用 React 和 ASP.NET Core 2.1 WebAPI 构建的单页应用程序。我正在切换到将 auth0 令牌从 localstorage 存储到 httponly cookie,并且无法访问存储在服务器上 httponly cookie(由客户端/浏览器设置)中的 auth0 令牌。
我将我的 auth0 令牌存储在 cookie 中,并将其发送到服务器进行验证。当 httponly 标志为 false 时,我能够访问 auth0 令牌,但是当设置为 true 时,我无法访问令牌。我尝试实现一个中间件来检查它,发现当 http only 为真时令牌不可见。
postman - 使用 Postman 的 httpOnly cookie
有没有办法在Postman中定义一个httpOnly cookie并将其发送给请求它的客户端?
在此先感谢您的帮助。
问候
javascript - Javascript 不会设置在 XHR 响应中收到的 httpcookie
我有一个基本的 SPA (react) <-> API (net core 2.2) 设置,有 2 个环境:dev 和 prod(小项目)。侧面有一个身份验证机制,用于检查每个包含 JWT 的请求中API
是否存在cookie。httponly
在开发环境中,它可以工作 okey-dokey:allowCredentials()
在 API 和withCredentials = true
react 应用程序中设置。两者都在我的本地主机的不同端口上运行。
但是在生产环境中(单独的 Heroku dynos),它只是不会设置httponly
cookie:我可以使用我的凭据登录,响应标头包含带有 jwt 的 cookie,但我将发出的所有其他请求都不会包含请求标头中的所有 cookie 标头!
然后我得到一个401 Unauthorized ...
错误(这是合乎逻辑的)。当我花了几个小时尝试所有事情时,这让我发疯了。
我的简单身份验证 XHR (vanilla) 调用:
我Startup.cs
在 .net 核心 api 中的配置:
这就是我在 api 控制器操作响应中设置包含 jwt 的 httponly cookie 的方式:
两种环境的代码相同,只是产生不同的结果。在这两种情况下,api都会在身份验证响应标头中向我发送正确的cookie,但在生产环境中,我的react应用程序不会保留它并在其他api调用中将其发送回......
这是从 API 收到的 cookie,它永远不会从 Web 应用程序发回:
如果有人有任何线索,我将永远感激不尽。
node.js - 从服务器到客户端的设置cookie在节点角度8中不起作用
必须将标头中的 cookie 从节点发送到角度客户端。默认它已经在 API 域中设置了 cookie。如果我在 cookie 中设置域,它就不起作用。
请澄清哪一种是设置cookie的正确方法?
iis - 如何使用 Angular UI 和 .net 框架 WebApi 在现有的 Set-Cookie 响应标头中附加 HttpOnly 标志
我有一个使用 Angular 作为前端和 .net framework 4.7 C# web api 作为服务器端的应用程序。这是托管在 IIS 10 中的。现在我们的客户想要在响应标头的 Set-Cookie 中添加 HttpOnly 标志。当我在 Chrome 开发工具中检查响应标头时,我可以看到以下 cookie:
设置 Cookie:NSC_mcwt_updpnqfuf-quf_________Jou_=ffffffff09ee746d45525d5f4f58455e445a4a423660;expires=Fri, 15-Nov-2019 06:52:47 GMT;path=/;secure
现在我想在现有 cookie 中附加“HttpOnly”标志。所以我尝试使用 web.config 文件中的 Rewrite 模块添加一个 cookie,它正在创建一个带有 HttpOnly 标志的新 Set-Cookie。但我只想附加现有的 Set-Cookie 标头本身。
我是否需要更改 Web.Config 文件中的任何内容以附加 HttpOnly 标志或在角度 UI 端进行任何所需的更改?
python - 如何在 Flask 中设置 HTTPONLY cookie
我阅读了Set "secure" attribute for Flask cookies,但它用于设置安全 cookie,但我正在尝试设置 HTTPONLY cookie。它们都是一种安全的 cookie,但规格不同(阅读更多)。
cookie 需要受到保护,因为它与用户的登录信息有关。
tomcat6 - 仅 Http 标志在 tomcat 6 和 servlet 2.5 上不起作用
我只想让我的 cookie 安全和 http 请求。我看过很多这样的帖子,似乎工作正常,但是使用配置文件和 servlet +2.5。我基本上想做的是只设置我的cookie http 和(如果可能的话)ssl。
c# - cookie 设置为 httponly 时无法验证防伪令牌
当我设置 httponly=true 的值时。AutoValidateAntiforgeryTokenAttribute 不验证请求并返回 400 bad request
完成此 cookie 后变得安全,如下所示
set-cookie: XSRF-TOKEN={{Cookie Value}}; path=/; samesite=lax; httponly
但是 AutoValidateAntiforgeryTokenAttribute 返回 400 bad request
when changed the Value HttpOnly = true to HttpOnly = false
它工作得很好。有没有办法在 asp core 和 angular 7 中将 antiforgerytoken cookie 设置为 httponly。如果它不起作用,请指导我了解其背后的原因。
coldfusion - 无法通过 ColdFusion 在浏览器中禁用 HttpOnly 标志
在我们的应用程序中,我们使用 J2EE 会话变量进行会话管理。我们最近从 ColdFusion 9 迁移到 ColdFusion 2018。迁移后,注销功能无法正常工作。我们发现,在 ColdFusion 2018 中,cookie JSESSIONID 没有从浏览器中清除,因为浏览器中的 HttpOnly 标志已设置为 true。
我们尝试通过以下方式在浏览器中禁用此 HttpOnly 标志,
但是这样 HttpOnly 标志仍然在浏览器中显示为启用。因此,客户端脚本无法清除 cookie JSESSIONID,因此注销功能不起作用。
在 CF2018 中,有什么方法可以在浏览器中为 cookie JSESSIONID 禁用 HttpOnly 标志?
笔记:
在 CF9 中,在浏览器中为 cookie JSESSIONID 禁用了 HttpOnly 标志。我们使用的是CF2018企业版(试用版,尚未过期)。更新 CF admin 中的设置后重新启动 CF 服务。