【问题标题】:Share credentials with cross domain script tag in Firefox在 Firefox 中使用跨域脚本标签共享凭据
【发布时间】:2014-06-27 15:21:27
【问题描述】:

假设我已经在域boo.com 中授权并拥有此会话:

s:x2GYrvxGgmsfFwx7gDbKXmwB.4BDXLpMaSqD9hgeTkBDx3z4TeczJeC50gnrH5bc+kWU

我想要的是将脚本标签添加到域foo.com,指向boo.com

<script src='http://boo.com/blah.js'></script>

在包括 Safari 和 Google Chrome 在内的所有浏览器中,脚本标签在 HTTP 标头中设置 cookie 值,但在 Firefox 中不起作用。

Firefox 没有设置 cookie 标头,所以我从服务器收到 Unauthorized 错误。问题是什么?

更新:

我在服务器端启用了 CORS,但问题在 Firefox 中仍然存在:

app.use(function (req, res, next) {
  // Website you wish to allow to connect
  res.setHeader('Access-Control-Allow-Origin', 'http://foo.com');

  // Request methods you wish to allow
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

  // Request headers you wish to allow
  res.setHeader('Access-Control-Allow-Headers', 'Cookie');

  // Set to true if you need the website to include cookies in the requests sent
  // to the API (e.g. in case you use sessions)
  res.setHeader('Access-Control-Allow-Credentials', true);

  // Pass to next layer of middleware
  next();
});

【问题讨论】:

  • 我重现了你描述的情况,但是could not reproduce the problem
  • @Quentin 我能知道你的 Firefox 版本吗?
  • @Quentin 你能告诉我你的 Firefox 的network.cookie.thirdparty.sessionOnly 值吗?是true 还是false
  • 它是false,但这是默认值。虽然 cookie 是一个会话 cookie,所以要求会话 cookie 不会有什么不同。
  • @Quentin 在我的情况下这是一个会话 cookie。好,谢谢。请让我知道用屏幕截图更新问题。

标签: javascript firefox cookies cross-domain


【解决方案1】:

解决办法如下:

<script src="http://boo.com/blah.js" crossorigin="anonymous"></script>

在这里阅读更多: http://blog.errorception.com/2012/12/catching-cross-domain-js-errors.html

【讨论】:

  • 该属性可实现更大的错误报告。它似乎根本没有处理问题中的问题。
  • @Quentin 我认为答案有点不完整,我也应该在响应标头中设置 Access-Control-Allow-Origin: * 标头。你怎么看?
  • @AfshinMehrabani — 这不是不完整的,而是完全错误的。设置 CORS 标头无济于事,这不是同源策略违规,而且您没有使用 XMLHttpRequest。
  • @Quentin Weird。你看过这篇文章了吗:blog.errorception.com/2012/12/…
  • @AfshinMehrabani — 是的,我做到了。查看该博客条目的第一段。该属性是关于在抛出异常时暴露更详细的错误对象。它与允许 cookie 无关。该页面上根本没有使用“cookie”一词,specification for the attribute 中也没有使用。
【解决方案2】:

我发现了问题。因为我的 Firefox 不接受第三方 cookie,script 标签和来自其他域的所有其他 http 请求不共享 cookie。

【讨论】:

  • @Quentin 谢谢你的线索。
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 2015-09-24
  • 2016-03-08
  • 2012-11-28
  • 2012-08-27
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多