我正在使用Jersey服务器,它以下列方式返回cookie:
return Response.ok()
.cookie(
new NewCookie(
"userAccessToken", userTokenDTO.getToken(), "/", "",
"what is this", 3600, false
)
).build();
Run Code Online (Sandbox Code Playgroud)
当我调用返回cookie的方法时,我在chrome中得到以下结果:

但由于某种原因,它没有在cookie选项卡中设置:
我已经尝试将域都设置为false,null,"",在hosts文件中重命名127.0.0.1创建一个条目.
return Response.ok()
.cookie(
new NewCookie(
"userAccessToken", userTokenDTO.getToken(), "/", "127.0.0.1",
"what is this", 3600, false)
).build();
Run Code Online (Sandbox Code Playgroud)
适用于IE 11,但仍然不是Chrome或Firefox ......
我已经多次尝试为127.0.0.1插入另一个主机名.在此示例中,它是text.myexample.com.它仍然无法在除IE11之外的任何其他浏览器中运行.
return Response.ok()
.cookie(
new NewCookie(
"userAccessToken", userTokenDTO.getToken(), "/", "test.myexample.com",
"what", 7200, false)
).build();
Run Code Online (Sandbox Code Playgroud)
我尝试在Google Chrome控制台中执行以下操作:
document.cookie = "userAccessToken=72bebbe0-44fd-45ce-a6e1-accb72201eff;Version=1;Comment=what;Domain=test.myexample.com;Path=/;Max-Age=7200"
Run Code Online (Sandbox Code Playgroud)
哪个是Chrome中服务器返回的标头中的Cookie.这很好.我几乎不知道这里发生了什么.
我在我的localhost域上设置了一个cookie,并按照SO中最高排名的问题指出了所有内容:set-cookie:带有显式域名的localhost上的cookies以及为什么asp.net不会在localhost中创建cookie?
tkn=2DH1hWlhOrl1Ty5qsYYyHKXZlfTOac;
Domain=.localyyyyyyyy.com;
Expires=mar., 21 avr. 2015 20:36:48 WEST;
Path=/;
HttpOnly
Run Code Online (Sandbox Code Playgroud)
我绑定了/ etc/hosts 127.0.0.1 to dev.localyyyyyyyy.com
我可以看到cookie的响应标题,但我看不到它存储在Chrome或Firefox中.

并在cookie选项卡上,没有: 
你们有没有想过这个?
谢谢,
我正在使用chrome,我想知道是否有扩展或方法来说明为什么没有发送cookie.
我有一个请求,我正在做http://dev/login,它正在返回,
Set-Cookie:DevId=cffbc7e688864b6811f676e181bc29e6; domain=dev; path=/; expires=Tue, 16-Jun-2015 21:27:43 GMT
Run Code Online (Sandbox Code Playgroud)
但是,在帖子上http://dev/Base/User/home/我没有发送DevIdcookie.如果有人碰巧知道,我很想知道为什么没有发送cookie.但是,此外,我很想知道如何告诉为什么以及如何在将来更好地调试此问题.
以下是Chrome的开发工具中捕获的一些请求
所以这是我的回复/login(注意Set-Cookie标题),
HTTP/1.1 200 OK
Date: Tue, 16 Jun 2015 19:57:43 GMT
Server: Apache
Pragma: no-cache
Cache-control: no-cache, max-age=0
Set-Cookie: DevId=cffbc7e688864b6811f676e181bc29e6; domain=dev; path=/; expires=Tue, 16-Jun-2015 21:27:43 GMT
Cache-Control: max-age=0
Expires: Tue, 16 Jun 2015 19:57:43 GMT
Keep-Alive: timeout=10, max=10
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json; charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
这是我的帖子/Base/User/home/1(注意没有cookie),
POST /Base/User/home/ HTTP/1.1
Host: dev
Connection: keep-alive
Content-Length: 0
Origin: http://dev
User-Agent: Mozilla/5.0 …Run Code Online (Sandbox Code Playgroud) cookies google-chrome http developer-tools google-chrome-devtools
无论我做什么,我都会收到错误(X.cookies 不是函数或 X.addCookies 不是函数)。我尝试使用上下文,page.context。browserContext 等,它总是以相同的方式结束(好吧,page.context 以及 browserContext 未定义,所以错误是不同的)。
语境:
代码:
beforeEach(async function fn() {
this.timeout(20000);
browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
page = await context.newPage();
await page
.goto("http://localhost:4200/#/login", {
waitUntil: "networkidle0",
})
.catch(() => {});
Run Code Online (Sandbox Code Playgroud)
});
并在测试中:
// await context.addCookies([
// { name: "csrftoken", value: cookieToken, path: "/" },
// { name: "sessionid", value: cookieSession, path: "/" },
// ]);
// await context.cookies();
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中设置一个cookie.
这是设置cookie的代码:
public HttpResponseMessage LogIn(UserLoginVM user)
{
// Do login stuff
var cookie = new CookieHeaderValue("STUPID-COOKIE", "12345");
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
cookie.HttpOnly = true;
// Get user's profile
HttpResponseMessage res = Request.CreateResponse<UserProfileVM>(HttpStatusCode.OK, profile);
res.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return res;
}
Run Code Online (Sandbox Code Playgroud)
服务器的响应如下:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcUFJPSkVDVFNcU2Ftc2tpcC5TZXJ2aWNlV2ViTmV3XFNhbXNraXAuQXV0aEFQSVxTYW1za2lwLkF1dGhBUElcbG9naW4=?=
X-Powered-By: ASP.NET
Date: Wed, 18 Feb 2015 11:58:07 GMT
Content-Length: 8019 …Run Code Online (Sandbox Code Playgroud) 我有一个react应用程序,它使用在另一个域上运行的java ee后端休息服务器.我启用了CORS:
Access-Control-Allow-Origin : http://localhost:3000
Access-Control-Allow-Headers : origin, content-type, accept, authorization
Access-Control-Allow-Credentials : true
Access-Control-Allow-Methods : GET, POST, PUT, DELETE, OPTIONS, HEAD
Access-Control-Max-Age : 1209600
Run Code Online (Sandbox Code Playgroud)
我正在使用像这样的fetch反应:
export function get(path, headers) {
return fetch(apiUrl + path, {
"metod" : "GET",
"headers" : headers,
"credentials" : "include"
})
}
Run Code Online (Sandbox Code Playgroud)
我的反应应用正在运行http://localhost:3000.当我登录时,服务器返回Set-Cookie,但cookie不包含在对服务器的任何进一步请求中,除非我尝试再次登录.然后它包含在该特定登录请求中.
有什么建议?
我挑战的背景
我正在建立一个无头的WordPress/WooCommerce商店.
如果您不熟悉无头CMS的概念,我会通过WordPress/WooCommerce REST API提取商店的内容(产品及其图像,文本).通过这种方式,我可以为我的客户提供CMS仪表板,同时我可以使用现代语言/库进行开发 - 就我而言 - React!
如果可能的话,我想在WordPress/WooCommerce/PHP中保存结账.根据项目,我应用此代码/样板文件,我怀疑我必须切断和更改支付网关,并且在PHP/WordPress中使这种安全和PCI兼容性要容易得多 - 这里有很多插件.
这意味着整个商店/前端将存在于React中,但购物车除外,当用户希望完成订单时,用户将被重定向到CMS前端(WordPress,PHP).
挑战
这使得管理会话的cookie变得非常不直观和非正统.当用户从商店(React站点)重定向到结帐(WooCommerce/PHP站点)时,购物车会话必须在两个站点之间保持不变.
此外,对WooCommerce的请求通过我的React客户端所在的Node/Express服务器进行路由.我这样做是因为我想让WordPress地址变得模糊,所以我可以应用GraphQL来清理我的请求和响应.这个问题是在这个过程中,cookie丢失了,因为我的客户端和我的CMS正在通过中间人(我的节点服务器)进行通信 - 我需要额外的逻辑来手动管理我的cookie.
代码
当我尝试从一个动作创建者(我使用Redux进行状态管理)向购物车添加内容时,我点击了我的Node/Express服务器上的api对应端点:
export const addToCart = (productId, quantity) => async (dispatch) => {
dispatch({type: ADD_TO_CART});
try {
// Manually append cookies somewhere here
const payload = await axios.get(`${ROOT_API}/addtocart?productId=${productId}&quantity=${quantity}`, {
withCredentials: true
});
dispatch(addToSuccess(payload));
} catch (error) {
dispatch(addToCartFailure(error));
}
};
Run Code Online (Sandbox Code Playgroud)
然后在Node/Express服务器上,我向WooCommerce发出请求:
app.get('/api/addtocart', async (req, res) => {
try {
// Manually retrieve & append cookies somewhere here
const productId = parseInt(req.query.productId); …Run Code Online (Sandbox Code Playgroud) 我正在使用wamp2.0 - PHP 5.3,apache 2.2.11,但我的会话不存储数据.
我有一个页面接受一个参数,我想在会话中存储(简化版本),所以当我来
http://www.example.com/home.php?sessid=db_session_id
Run Code Online (Sandbox Code Playgroud)
该脚本如下所示:
session_start();
$sessid = @$_GET['sessid'];
if ($sessid) {
$_SESSION['sessid'] = $sessid;
}
var_dump($_SESSION);
Run Code Online (Sandbox Code Playgroud)
和输出:
array(1) { [0]=> string(13) "db_session_id" }
Run Code Online (Sandbox Code Playgroud)
这很好,但是当我去链接(没有sessid参数)时,$_SESSION数组是空的.我的事件试图$_SESSION['sessid'] = $sessid;在没有参数的情况下进入页面之前评论该行,但它仍然无法正常工作.
我检查了session_id()输出,会话ID保持不变.
phpinfo()的会话设置
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly …Run Code Online (Sandbox Code Playgroud) TL; DR:是否可以使用Prebid.js v1.6.0和本地运行的Web服务器测试Prebid标头出价?
我创建了一个库,用于将Prebid标题出价集成到使用React构建的Web应用程序中.它使用Prebid 0.34.6工作正常,我在生产中成功使用它.
我现在正在迁移我的库以使用最新版本的Prebid,1.6.0.我仔细地遵循了迁移指南并实施了那里概述的所有变更.
为了测试我的代码,我设置了一个在本地开发服务器上运行的演示应用程序.
在应用程序的调试输出中,我可以看到收到的出价(日志说INFO: Bids Received for Auction with id: aa5d34f4-3eb7-4cb0-a756-6f7cc4a18568).
但是,广告位中不会显示任何广告素材.我的bidBackHandler回调函数接收一个空对象作为参数.当我pbjs.getAdserverTargeting()在浏览器的开发者控制台上调用时,我也得到一个空对象.
在Prebid示例页面上,显示了一个基本的Prebid.js示例,用于将Prebid集成到网页中,以及JSFiddle.
我在演示应用程序中使用与小提琴中完全相同的单位和GPT配置,但无济于事 - 广告位中没有广告素材,只有"自家广告"后备广告,对出价退款处理程序的空回复,空广告服务器定位.
然后我发现如果我将基本Prebid.js示例中的代码复制到我本地开发服务器上的HTML页面,它也会以同样的方式失败 - 广告位中没有广告素材,只有"自家广告"回退,空回复到出价退款处理程序,空广告服务器定位.
然后我用我的演示创建了一个沙箱(→ https://codesandbox.io/s/k5w8mr9o23),在那里,我得到了所需的结果,显示了演示创意.
似乎使用Prebid 1.x,在localhost上运行时无法填充广告位.
谁能证实这一点?有没有办法让这项工作?
我的服务器有响应。响应头包含有效的 Set-Cookie。Chrome 响应/Cookies 说我有 1 个 cookie,好的。但是... cookie 没有设置到 DevTools/Application/Cookies
/*
My frontend on Vue
I renamed 127.0.0.1 to www.example.com
So running on www.example.com:80 or just www.example.com
*/
let response = await axios({
method: 'post',
url: 'http://127.0.0.1:3000/api/login', // my Node server on 3000 port
data: {
email : login,
password: password,
},
})
Run Code Online (Sandbox Code Playgroud)
/*
My backend part on Node.js+Express
Running on localhost:3000 or 127.0.0.1:3000
CookieParser() is setted
*/
let options = {
maxAge: 345600000,
httpOnly: true,
path: '/',
}
res …Run Code Online (Sandbox Code Playgroud) 我在通过弹出脚本中的 chrome 扩展程序处理 cookie 时遇到了一些麻烦。
popup.js 内容:
document.addEventListener('DOMContentLoaded', () => {
function cookieinfo() {
chrome.cookies.getAll({url: 'http://localhost:8080'}, function(cookie) {
console.log('Found cookie: ', cookie)
if (cookie == null)
return;
fetch('http://localhost:8080', {credentials: 'include'}).then((response) => {
// do some stuff
return response;
});
});
}
window.onload=cookieinfo;
}, false);
Run Code Online (Sandbox Code Playgroud)
我执行的步骤:
也许有人知道我做错了什么?
编辑:
看来原因是我的cookie有参数HttpOnly=true和SameSite=Lax(相关链接)。我可以在服务器日志中看到另一个 cookie。但是由于这个线程,如果credentials参数设置为include,则所有 cookie 都将被发送,即使是 httpOnly cookie。由于这个答案,我也尝试将它发送到 …
javascript cookies httponly google-chrome-extension samesite
cookies ×7
javascript ×4
express ×3
axios ×2
node.js ×2
reactjs ×2
ads ×1
asp.net-mvc ×1
cors ×1
e2e-testing ×1
fetch ×1
http ×1
httponly ×1
iframe ×1
java ×1
jersey ×1
localhost ×1
mozilla ×1
php ×1
playwright ×1
postman ×1
prebid.js ×1
puppeteer ×1
samesite ×1
session ×1
vue.js ×1
wamp ×1
wordpress ×1