当用户关闭他们的浏览器时,我希望我的cookie消失 - 我已经设置了一些看起来很有前途的属性,但是即使在关闭整个浏览器之后我的cookie也会恢复生存.
HttpCookie cookie = new HttpCookie("mycookie", "abc");
cookie.HttpOnly = true; //Seems to only affect script access
cookie.Secure = true; //Seems to affect only https transport
Run Code Online (Sandbox Code Playgroud)
我错过了什么属性或方法来实现内存cookie?
我正在使用的Add方法System.Net.CookieContainer.它多年来一直运作良好,但我突然得到:
用"2"参数调用"添加"的异常:"'值'='321,386,%2F%3Fa%3D1,http%3A%2F%2Fwww.xxxx.com%2Fpremium%2Fmoney'部分cookie是无效的."
我正在添加从网页返回的cookie.网页的原始标题是:
...
_chartbeat_uuniq=1;
_chartbeat5=321,386,%2F%3Fa%3D1,http%3A%2F%2Fwww.xxx.com%2Fpremium%2Fmoney;
gs_p_GSN-375009-Z=0;
...
Run Code Online (Sandbox Code Playgroud)
cookie值有什么问题?是逗号吗?
在Ember中有没有办法将请求发送到后端的cookie?
例如:如果我的客户端URL是protocol://example.com.当我导航到时,属于同一域的cookie将位于请求标头中protocol://example.com/profile.但是,它们不会在后续请求中保留配置文件路由模型方法 - >示例到protocol://example-host/posts.如何使这些cookie持续存在?
/app/routes/profile.js:
import Ember from "ember";
import AuthenticatedRouteMixin from "simple-auth/mixins/authenticated-route-mixin";
export default Ember.Route.extend({
model() {
return this.store.findAll("post");
},
renderTemplate() {
this.render("header", {
outlet: "header"
});
this.render("profile");
}
});
Run Code Online (Sandbox Code Playgroud)
/app/adapters/application:
import Ember from "ember";
import DS from "ember-data";
export default DS.RESTAdapter.extend({
host: 'http://example-host.com',
corsWithCredentials: true,
crossDomain: true,
xhrFields: { withCredentials: true }
});
Run Code Online (Sandbox Code Playgroud) 我有一个使用预渲染服务的 nginx 配置文件,我想检查 cookie 名称 access_token 是否存在,然后提供本地角度,如果 cookie 不存在(用户未登录),则代理传递请求到预渲染服务,
这是我的 nginx 配置文件,
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=prerendercloud_cache:10m max_size=100m inactive=60m use_temp_path=off;
server {
set \$root /var/www/;
resolver 8.8.8.8;
set \$prerendercloud 'service.prerender.cloud';
listen 80;
server_name _;
location = / {
if (\$http_cookie ~* "access_token" ) {
root \$root;
try_files \$uri \$uri/ /index.html;
index index.html;
}
root \$root;
try_files \$uri @prerendercloud;
}
location / {
root \$root;
try_files \$uri \$uri/ /index.html;
index index.html;
}
location @prerendercloud {
proxy_set_header Accept-Encoding "gzip";
gunzip on;
root \$root; …Run Code Online (Sandbox Code Playgroud) 解释
在这里,我使用 Axios 向 ABC.com/Users/Login 发送了一个 get req,之后我向 ABC.com/Users/Login 发送了一个包含表单数据和 Cookie 的发布请求。
但它不能正常工作。它在邮递员中正常工作
我的代码
axios.get('ABC.com/Users/Login')
.then(async response => {
console.log("call login page");
let tokenKey = "__RequestVerificationToken";
let tokenValue = "CfDJ8DF1Ubmz1lpEibYtvvnYRTVXaJ-HWILEtqE_A3bGmDrD-yyKyJPbYK7qrcS9AIzezPo5-
tOWmcXs6WgYThZP-5qo1o1XXpalkJDEPnBtnVa7EhaUYbY2XNcANuugyWgkIf3-O2-_f5h7mNu960qGIaM";
const userName="XYZ";
const pass="test@123";
let form=new FormData();
form.append('UserName', userName);
form.append('Password', pass);
form.append([tokenKey], tokenValue);
headers={
'Cookie':response.headers['set-cookie'];
}
await axios.post('ABC.com/Users/Login', form,
{ headers: {...form.getHeaders(),...headers}})
.then(async response => {
console.log(`Login success in ${userName}`);
console.log("response",response.data);
})
.catch(error => {
console.log(error);
});
}
.catch(error => {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
在第一次 Axios 通话中,我得到:-
Set-Cookie: .AspNetCore.Antiforgery.b02ILwhXMuw=CfDJ8DF1Ubmz1lpEibYtvvnYRTXz_0rOkGhY6OXEw3d3vsDNG81V4IaMPfVZm5Hk3_icgp_ToLDG9xKu2mcM1VtEOMnSCktfZwG7Dj9_549SUiKht6Yv33pozagGjseFsfXI74wBwu-mMJkzgwfPx3jS4OA; path=/; …Run Code Online (Sandbox Code Playgroud) 我在这上面花了很多时间,这太疯狂了。
我有一个包含“setcookie”函数的页面基类,这基本上是这样的:
Dim context As HttpContext = System.Web.HttpContext.Current
If context.Request.Cookies(cookieName) Is Nothing Then
Dim cookie As HttpCookie
cookie.Value = cookieValue
cookie.Expires = DateTime.Now.AddDays(7)
context.Response.Cookies.Add(cookie)
Else
Dim cookie As HttpCookie = context.Request.Cookies(cookieName)
cookie.Expires = DateTime.Now.AddDays(7)
cookie.Value = cookieValue
End If
Run Code Online (Sandbox Code Playgroud)
该函数由一个简单的 aspx 页面调用。由于这是在测试环境中,因此我正在使用的 cookie 中有一个先前的值“123”。如果我使用调试和监视窗口,我会看到值成功更改为“168”。
我在一行上有一个调试断点,它是:
Response.Redirect("overview.aspx", False)
Run Code Online (Sandbox Code Playgroud)
当断点处于活动状态时,观察窗口中的值为:
currProjectID 168 Integer
HttpContext.Current.Request.Cookies("currProjectID").Value "168" String
Run Code Online (Sandbox Code Playgroud)
(currProjectID 是 basepage 类中的一个属性,它使用上述函数获取/设置 cookie)
现在,第二个我使用“F10”离开上面的断点线,变量的值发生了变化!
HttpContext.Current.Request.Cookies("currProjectID").Value "123" String
currProjectID 123 Integer
Run Code Online (Sandbox Code Playgroud)
疯了吧!代码无处可去,调试点直接在上面的“response.redirect”行下方,但值立即更改为之前的值!“setcookie”例程附近没有任何东西,所以请有人拯救我的精神错乱并告诉我出了什么问题!?
我们创建了两个具有相同名称的 cookie。当我迭代循环时,我总是得到第一个 cookie。有没有办法分别访问这两个cookie?
if (Request.Cookies.AllKeys.Where(x => x == "test").Count() > 1)
{
foreach (var cookie in Request.Cookies.AllKeys)
{
if (Request.Cookies[cookie].Name == "test")
{
var temp = System.Web.HttpContext.Current.Request.Cookies["test"];
temp.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(temp);
}
}
};
Run Code Online (Sandbox Code Playgroud) 我尽可能详细地提出这个问题,以便遇到相同问题的其他人都将拥有全面的资源来解决这个问题并使其发挥作用。
目标是使用签名 cookie,以便我的应用程序中经过身份验证的用户可以自由访问他们的任何文件,而无需签署 URL。
我很确定其中大部分都是正确的,但为了提供完整的图片,我将包括我所拥有的设置。
我有一个桶,我们可以打电话my-storage。它具有以下 CORS 配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
桶策略是:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity xxx"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-storage/*"
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-storage/*",
"Condition": {
"StringLike": {
"aws:Referer": "http://localhost:8080/*"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
本地主机异常只是为了让我可以在本地构建/测试我的应用程序,因为 HTTP cookie 由于跨域问题而无法正常工作。
我有一个使用此存储桶作为源的 CloudFront 发行版。在本文中,我们将称 …
cookies httpcookie amazon-web-services cors amazon-cloudfront
我正在尝试在我的 aws lambda 函数响应中设置 cookie。我没有任何标头映射,因为我正在使用 lambda 代理与 API Gateway 集成。lambda 函数中的响应代码如下所示:
exports.handler = async (event) => {
const response = {
statusCode: 200,
"multiValueHeaders": {
"Set-Cookie": ["gtgm=6c7729687d5ff1a05f1a5dfb15ce3b8fa3f2b590; path=/; expires=Fri, 13-Feb-2032 13:27:44 GMT; secure; HttpOnly; SameSite=None"]
},
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Credentials": true,
},
};
return response;
};
Run Code Online (Sandbox Code Playgroud)
我使用 fiddler 检查响应,我可以在响应中看到“Set-Cookie...”,这让我相信上面的代码是正确的?问题是浏览器只是忽略它并且除了 AWS DNT cookie 之外根本不设置任何 cookie。我不确定还需要检查什么,或者我是否遗漏了 cookie 配置中的任何内容。
这就是我的请求:
<Button
onClick={() => {
fetch(
"https:mysupercoolapi.com/cookie-test/",
{
// credentials: "include",
headers: {
"Content-Type": "application/json",
// "Access-Control-Allow-Credentials": "true",
},
}
) …Run Code Online (Sandbox Code Playgroud) httpcookie ×10
cookies ×6
c# ×4
.net ×2
asp.net ×2
setcookie ×2
asp.net-core ×1
aws-lambda ×1
axios ×1
c#-4.0 ×1
cors ×1
ember-cli ×1
ember-data ×1
ember.js ×1
javascript ×1
nginx ×1
proxypass ×1