问题标签 [fetch-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
336 浏览

service-worker - serviceworker中获取页面和文件的区别

这是通过 serviceworkers 处理请求的常用代码,如果 url 在缓存中,则返回缓存响应或从服务器获取它。但我的疑问是关于 2 条注释行,我们需要使用其中之一来获取响应。

我的疑问是,当我event.respondWith(fetch(event.request, { credentials: 'include'用于获取页面时,出现以下错误

DOMException:无法在“FetchEvent”上执行“respondWith”:获取事件已被响应。

但是页面最终呈现,肯定浏览器最终获取响应,但是当我使用 sam 获取图像时,我得到了同样的错误,最重要的是没有获取图像。

如果我使用第二个选项return fetch(event.reuqest, { credentials: 'include' });,那么它适用于图像和页面。

我无法弄清楚该错误的原因是什么,以及为什么它对文件和页面的行为不同。

我的另一个疑问是,我真的需要这里的凭证参数吗,我添加它是因为我在 web 中看到的大多数实现都使用了它,但我观察到的是请求对象已经具有它的凭证属性,现在它并不总是

包括

有时是

同源

也。那么我是否会通过添加它来覆盖实际的凭证值。如果不是这种情况,那么是否包含它就没有区别。没关系。

但如果是其他方式,那么我们不应该覆盖凭证值,这可能会产生不好的副作用。

0 投票
9 回答
103608 浏览

javascript - 上传进度指示器以获取?

我正在努力寻找使用fetch实现上传进度指示器的文档或示例。

这是迄今为止我找到的唯一参考资料,其中指出:

进度事件是一个高级功能,目前无法获取。Content-Length您可以通过查看标头并使用传递流来监视接收到的字节来创建自己的。

这意味着您可以明确地处理响应而无需Content-Length不同。当然,即使Content-Length存在也可能是谎言。使用流,您可以随心所欲地处理这些谎言。

我将如何编写发送的“用于监视字节的直通流”?如果它有任何区别,我正在尝试这样做以将图像从浏览器上传到Cloudinary

注意:我对Cloudinary JS 库感兴趣,因为它依赖于 jQuery 而我的应用程序不依赖。我只对使用原生 javascript 和 Github 的polyfill 执行此操作所需的流处理感兴趣。fetch


https://fetch.spec.whatwg.org/#fetch-api

0 投票
1 回答
320 浏览

javascript - 使用获取流的可恢复下载器

我正在尝试仅基于客户端创建可恢复的文件下载器。服务器超出了我的控制范围,根据 ajax 请求,我得到了一个非常大的二进制数据文件(100mgb)的文件。

经过长时间的研究,我了解到我不能使用 xhr 元素来流式传输响应,并且在完全缓存之前我无法读取文件的块......所以我看了更多,发现 fetch api 很新但我不能找到任何适当的文档或教程。如果有人能说明一个获取一些 url 并逐块读取流的简单示例,我将不胜感激

0 投票
2 回答
19517 浏览

javascript - 在 Safari 中未定义获取(ReferenceError:找不到变量:获取)

由于某种原因fetchhttps://fetch.spec.whatwg.org/)未在 Safari(版本 9.0.3)中定义,有人知道为什么吗?它似乎是标准并且在 Chrome 和 Firefox 中运行良好。似乎找不到其他人有同样的问题

我正在使用 redux 的反应,这里是一些示例代码:

0 投票
1 回答
2941 浏览

ajax - Django 1.9 AJAX 表单 CSRF 令牌 403 错误 - “未设置 CSRF cookie”

我在 SO 上看到了很多关于此的内容,但没有什么可以解决我的问题。

问题:

启用 CSRF 中间件后,Django 在 AJAX 表单请求中以 403 响应,说明:

“未设置 CSRF cookie。”

文档之后,实现了一个 JS 功能,它设置了自定义的“X-CSRFToken”标头。

它按预期工作,从浏览器获取“csrftoken” cookie并将其与AJAX请求一起发布:

但响应仍然是 403。

尝试过的解决方案:

我已经尝试了所有可以在 SO 或网络上找到的东西,特别是:

  • 检查中间件是否启用:

    /li>
  • 启用 cookie 的不同浏览器;

  • @ensure_csrf_cookie用;装饰我的视图

  • {% csrf_token %}在我的模板中设置;

  • 使用render具有正确请求上下文的快捷方式;

  • 在我的;中设置自定义CSRF_COOKIE_NAMECSRF_HEADER_NAMEsettings.py

  • 显式设置CSRF_COOKIE_SECURE = Falseand CSRF_COOKIE_HTTPONLY = False;

  • 显式设置CSRF_TRUSTED_ORIGINS设置;

  • 在开发和生产服务器上进行测试;

  • 即使request.META["CSRF_COOKIE_USED"] = True在我看来,正如有人建议的那样。

仍然一无所获。

标题:

如果我使用@csrf_exemptandprint(request.META)在我看来,很明显,自定义标头“X-CSRFToken”存在于请求中,并根据 Django 文档格式化,带有“HTTP_”前缀,用下划线替换连字符,全部大写:“HTTP_X_CSRFTOKEN”

更重要的是,它的值与 Django 设置的 cookie 匹配。

饼干:

奇怪的是,如果我尝试print(request.COOKIES)在我看来,在页面和表单加载中,我可以在那里看到“csrftoken” cookie,但AJAX 请求上的字典是空的。这可能是问题吗?

不顾一切地发现实际上是错误的。谢谢您阅读此篇。

0 投票
3 回答
4134 浏览

javascript - Service Worker 可以响应同步的 XHR 请求吗?

我想使用 Service Worker 来增强现有的网站。特别是,我想通过让 Service Worker 在实际资源不可用时使用占位符资源响应请求来添加更好的离线支持。这种方法一直有效,但我遇到了障碍。站点中有几个地方使用同步XHR 请求来加载某些资源,而我的 Service Worker 在 Chrome 中没有接收到它们的事件。(请不要建议消除同步 XHR 请求。这是可取的,但超出了范围。)

Service Worker 应该可以响应同步 XHR 请求吗?我可以想象这实现起来很复杂,如果不支持它会理解的。W3C Service Workers Specification (Working Draft)WHATWG Fetch Specification (Living Standard)之间应该存在一个“正确”的答案,但我还没有完成对它们的解读。我希望能解释一下规范如何描述是否应该支持这一点,和/或对有关指定或实现此行为的讨论的任何引用。

0 投票
0 回答
48 浏览

javascript - 获取,是否可以在读取 json 内容后拒绝 HTTP 状态?

这很简单,我有一个返回 HTTP 412 和 JSON 错误描述的 API。

我是否可以在我的 javascript (ES6) 中获取我的 url 并掌握我需要的两个信息:

  • HTTP 代码
  • 解析的Json

如果我在标头之前解析JSON,则 response.status 不再可用。如果我在 json 之前解析标头,我会在有机会获取我的 JSON 正文之前抛出异常。

有没有办法处理这个?

0 投票
1 回答
5247 浏览

javascript - JavaScript 的 Fetch API 的“同源”和“无关联”有什么区别?

我认为相同的起源意味着没有 CORS,反之亦然。JavaScript 的 Fetch API 选项的两个选项有什么区别mode

此外,在规格中,它说:

尽管默认请求模式是“no-cors”,但标准强烈建议不要将其用于新功能。这是相当不安全的。

为什么不安全?来源:https ://fetch.spec.whatwg.org/#requests

0 投票
2 回答
758 浏览

promise - fetch Promise 永远不会被执行

我正在使用 nativescript 为 android 开发应用程序。我有类似的东西

但该then块永远不会被执行。有时该catch块被执行并给出网络错误。但是无论哪种情况,根据我的 tcpdump 记录,发送请求并顺利收到响应。

因此,似乎 nativescript 出于某种原因过滤了响应。

有人经历过吗?

0 投票
2 回答
1043 浏览

javascript - whatwg-fetch 为什么在预检时不包含凭据(选项)

我正在尝试 whatwg-fetch (用于 Fetch API 的 polyfill),并且在执行 POST 时,会执行预检。但是由于在将 OPTIONS 发送到 REST 服务时未发送凭据,因此我收到了“未经授权”的响应。