angular - iOS Safari 和 Mac OS Safari 不发送 cookie

标签 angular safari

我有一个 Angular 5 应用程序,它尝试通过 HTTP-GET API 调用加载产品,但在 iOS Safari 和 Mac OS Safari 上崩溃。

第一次访问该页面时一切正常,但第二次之后我的 Angular 应用程序崩溃了,因为 HTTP-GET 未返回预期值。

我检查了开发人员控制台,结果发现 Safari 没有从我的域发送 GET 工作所需的 cookie。

enter image description here 它说请求来自硬盘缓存。 我检查了服务器上的日志文件,Safari 实际上调用了我的 API(尽管它说它使用了硬盘缓存),但没有 cookie。

来 self 的 Angular 应用程序的 HTTP-GET 如下所示:

this.noCacheHeader = new HttpHeaders()
              .append('Cache-Control', 'no-cache')
              .append('Cache-control', 'no-store')
              .append('Expires', '0')
              .append('Pragma', 'no-cache');

get<T>(url: string): Observable<T> {
        return this.http.get<T>(this.baseUrl + url, { withCredentials: true, headers: this.noCacheHeader });
      }

由于 IE11 的缓存问题,我已经禁用了缓存。

我该怎么做才能告诉 Safari 始终发送我的 cookie?

更新1:

我在 HTTP-GET 查询“products?ticks=1337”中添加了一个ticks参数,现在它可以工作了。所以肯定和缓存有关系。

最佳答案

可能不一样,但我在 Safari 上也遇到了类似的问题。我正在使用<audio> jquery 加载的 html 中的标签。 Safari 未在音频源请求中包含 cookie,因此无法正确加载。但不知怎的,在我用 CTRL+F5 刷新页面后它就起作用了 - 它通过完全重新加载发送了 cookie...

我通过添加 crossorigin="use-credentials" 解决了这个问题...令人讨厌的问题。

关于angular - iOS Safari 和 Mac OS Safari 不发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50758167/

相关文章:

javascript - OneSignal 与 Angular 2

android - 无法从 ionic 3 应用程序将图像上传到服务器

html - Safari 上的 CSS 翻译问题

google-chrome - CSS Transform Scale 在 Chrome、Safari 中不起作用

Angular获取所有控制台错误

angular - 如何更改 ElectronJS 应用程序默认图标?

angularjs - 在 angular 2 组件中使用 jquery/jqueryui 等库的正确方法

ios - iOS 中 safari 上的视频(仅限 iPhone)在关闭后一直打开

css - 在 Safari 中调整窗口大小时表格单元格中断

javascript - 通过 JavaScript 将 Canvas 图像从 Safari (5.0.x) 保存到 AppEngine Blobstore