【问题标题】:IE 10+ doesn't send cookies on cross-origin CSS url() requestIE 10+ 不会在跨域 CSS url() 请求上发送 cookie
【发布时间】:2015-04-24 21:30:59
【问题描述】:

我正在尝试将最终用户的安全图像显示为具有背景的 div (css background-image: url(...)) 我有跨域配置,其中我的 AngularJS 客户端应用程序部署在 S3 存储桶和服务器上-side (Ruby-on-Rails) 部署在不同域名下的heroku上。

所有普通浏览器都会在图像请求中发送 auth cookie(在身份验证后设置),以便服务器可以了解用户是否有权访问该特定图像并根据该请求进行响应。

但不知何故,IE10 和 IE11 不会在跨域请求上发送任何 cookie。但是当我在同一台机器上设置两台服务器时(只有端口不同) - 一切正常。

谁能帮我解决这个问题?

更新:

请求标头:

  • 接受 image/png, image/svg+xml, image/*;q=0.8, /;q=0.5
  • 推荐人 my_referrer_url
  • 接受语言 ru-RU,en-US;q=0.5
  • 用户代理 Mozilla/5.0(兼容;MSIE 10.0;Windows NT 6.1;WOW64;Trident/6.0)
  • 接受编码 gzip,放气
  • 托管 my_heroku_serverside_url
  • DNT 1
  • 连接保持活动`

响应标头:

  • 响应 HTTP/1.1 401 未经授权
  • 服务器牛仔
  • 2015 年 2 月 26 日星期四 22:24:04 GMT
  • 连接保持活动
  • Strict-Transport-Security max-age=31536000
  • X-Frame-Options SAMEORIGIN
  • X-Xss-保护 1;模式=块
  • X-Content-Type-Options nosniff
  • 内容类型文本/html; charset=utf-8
  • 缓存控制无缓存
  • X-Request-Id df2154b6-5c6f-4534-bff0-094576359b78
  • X 运行时 0.005919
  • 传输编码分块
  • 通过 1.1 vegur

【问题讨论】:

  • 奇怪。这个问题太罕见了,没人遇到过吗?
  • Cookies 受浏览器同源策略的约束,所以如果 IE 没有将 cookie 发送到不同的域,这是预期的行为。
  • 好吧,我不确定我明白你的意思。在具有相同操作系统的同一台计算机上,Chrome 和 Firefox 按预期发送 cookie,但 IE 没有。
  • 你考虑过使用xdomain吗? said 可以帮助使用旧版 IE,但我会试一试。另请查看solution
  • 不幸的是,这对 IE 来说是一个令人头疼的问题,因为 IE 仍然强制执行称为 P3P 策略的东西。看看这篇文章,因为它可能会对你的问题有所启发:techrepublic.com/blog/software-engineer/…

标签: ruby-on-rails angularjs internet-explorer cookies heroku


【解决方案1】:

无需使用 Restangular,您可以为每个 $http 请求指定 widthCredentials,如下所示:

.config(function ($routeProvider, $httpProvider) {
    $httpProvider.defaults.withCredentials = true;

我之前在这里回答过类似的问题:$http doesn't send cookie in Requests

【讨论】:

  • 这没有帮助。我写道,我请求图像作为 css 背景图像属性,所以角度不会影响这种行为。
【解决方案2】:

几个月前我遇到了类似的问题,我使用 AngularJS 和 Restangular 解决了它,然后在我的 JS 应用程序配置中进行设置:

angular.module('myApp', ['restangular'])
  .config(['RestangularProvider', function (RestangularProvider) {
    RestangularProvider.setBaseUrl(serverUrl);
    RestangularProvider.setDefaultHttpFields({
      'withCredentials': true
    });
  }]);

一切正常。

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 2011-01-05
    • 2020-06-30
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多