相关疑难解决方法(0)

在Safari中设置跨域cookie

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中使这项工作?

javascript cookies safari cross-domain cross-site

61
推荐指数
4
解决办法
9万
查看次数

跨域会话 Cookie(Heroku 上的 Express API + Netlify 上的 React App)

我有一个 React 应用程序调用 node.js/Express 中的 API。

前端部署在 Netlify (https),​​后端部署在 Heroku (https)。

我的问题:

  • 在开发环境(本地主机)中工作的一切
  • 在生产(Netlify/Heroku)中,用于注册和登录的 api 调用似乎有效,但会话 cookie 未存储在浏览器中。因此,对 API 中受保护路由的任何其他调用都会失败(因为我没有收到用户凭据)。

             跨域身份验证 cookie react express




说话很便宜,给我看代码....

后端(Express API):

应用程序.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)

heroku session-cookies express reactjs express-session

10
推荐指数
1
解决办法
6558
查看次数

iOS 不从快速 cookie 会话中保存 cookie

这个问题一直让我抓狂。我在前端使用 React 和 Apollo (GraphQL),并cookie-session在后端使用 Passport.js 和 Express 进行身份验证。在桌面上的任何浏览器(尚未测试 safari)上,一切都可以完美运行,但是 cookie 不会保存在 IOS 上,并且用户无法登录。passport-local仅当使用 和 且浏览器尚未有 cookie 时才会出现此问题。如果我使用登录passport-googlepassport-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)

https session-cookies ios express passport.js

6
推荐指数
1
解决办法
1821
查看次数