Evernote的书签能够做到这一点,因此即使赏金将以非生产性的方式进行,最受欢迎的答案也不会回答这个问题.
我必须从域B.com调用域A.com(使用http设置cookie).我在域名B.com上所做的就是(javascript):
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = "A.com/setCookie?cache=1231213123";
head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
这会在我测试的每个浏览器上设置A.com上的cookie,但Safari除外.令人惊讶的是,即使没有P3P标头,这也适用于IE6.
有没有办法在Safari中使这项工作?
我有一个 React 应用程序调用 node.js/Express 中的 API。
前端部署在 Netlify (https),后端部署在 Heroku (https)。
我的问题:
说话很便宜,给我看代码....
应用程序.js
require('./configs/passport');
// ...
const app = express();
// trust proxy (https://stackoverflow.com/questions/64958647/express-not-sending-cross-domain-cookies)
app.set("trust proxy", 1);
app.use(
session({
secret: process.env.SESSION_SECRET,
cookie: {
sameSite: process.env.NODE_ENV === "production" ? 'none' : 'lax',
maxAge: 60000000,
secure: process.env.NODE_ENV === "production",
},
resave: true,
saveUninitialized: false,
ttl: 60 * 60 * 24 * 30 …Run Code Online (Sandbox Code Playgroud) 这个问题一直让我抓狂。我在前端使用 React 和 Apollo (GraphQL),并cookie-session在后端使用 Passport.js 和 Express 进行身份验证。在桌面上的任何浏览器(尚未测试 safari)上,一切都可以完美运行,但是 cookie 不会保存在 IOS 上,并且用户无法登录。passport-local仅当使用 和 且浏览器尚未有 cookie 时才会出现此问题。如果我使用登录passport-google或passport-facebook它有效,那么如果我注销并passport-local再次使用,即使它是不同的用户,它也有效。另外,如果我进入设置并关闭 IOS Safari 的“防止跨站点跟踪”,它第一次就能工作,但是如果我想将其用作 PWA,则无法将其关闭。
我的快速设置如下所示(省略所有导入):
app.use(
cookieSession({
maxAge: 24 * 60 * 60 * 1000 * 30,
keys: [process.env.COOKIE_KEY],
overwrite: true
})
);
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
const whitelist = [
"https://toomanylists.com",
"https://www.toomanylists.com"
];
app.use(
cors({
origin: (origin, callback) => {
console.log(origin);
if (whitelist.indexOf(origin) !== -1 || !origin) {
callback(null, true);
} else …Run Code Online (Sandbox Code Playgroud) express ×2
cookies ×1
cross-domain ×1
cross-site ×1
heroku ×1
https ×1
ios ×1
javascript ×1
passport.js ×1
reactjs ×1
safari ×1