【问题标题】:IE 11 not sending cookies with CORS get requestIE 11 不发送带有 CORS 获取请求的 cookie
【发布时间】:2020-05-01 19:28:31
【问题描述】:

我目前正在从 localhost:8090 进行 ajax GET 调用,具体如下:

$.ajax({
              url: 'https://dev-855592.okta.com/api/v1/sessions/me',
              method: 'GET',

              dataType: 'json',
              xhrFields: {
                   withCredentials: true
              },
              crossDomain: true,
              success : function(data){
                  console.log(data);
              },
              error : function(data){
                console.log('Session not found');
              },
        });

由于这是一个 Okta 调用,它需要与请求一起发送 cookie。 但是 IE 11 没有在请求中发送任何 cookie。

我已经试过了: 受信任站点的 ie11 设置中的“跨域访问数据源:已启用”。此解决方案有效。

但我不希望对最终用户产生任何影响,并且假设最终用户已经接受了第三方 cookie,那么实现这一点的最佳方法应该是什么?

【问题讨论】:

    标签: cookies cross-domain internet-explorer-11 okta


    【解决方案1】:

    如果您想在 IE 11 中启用 CORS 请求,您的服务器必须将以下标头附加到所有响应:

    Access-Control-Allow-Origin: http://example.com
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Methods: ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL
    Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth, User-Agent, Translate, Range, Content-Range, Timeout, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Location, Lock-Token, If
    Access-Control-Expose-Headers: DAV, content-length, Allow
    

    您也可以选择附加 Access-Control-Max-Age 标头,指定预检请求将被缓存的秒数,这将减少请求量:

    Access-Control-Max-Age: 3600
    

    你可以参考this link为特定服务器实现CORS。

    【讨论】:

      猜你喜欢
      • 2021-05-29
      • 2016-09-28
      • 2012-02-10
      • 2011-04-12
      • 2015-02-11
      • 2021-07-05
      • 2016-04-30
      相关资源
      最近更新 更多