问题标签 [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 投票
2 回答
153 浏览

javascript - Request.text() (以及从 Body 实现的其他函数)实际上做了什么?

基于它的 MDN 描述Request已经实现了来自Body,like的功能text()。但是,我不知道这些功能实际上是做什么的。他们似乎什么也没做。

我有这样的代码

发生的情况是,promise 立即解析,使用空字符串,并且没有请求发生 - 如果您查看开发工具(或 wireshark)中的网络活动,没有实际请求发生。但也没有错误。

到底是怎么回事?BodyAPI的目的是什么?

MDN 上的描述谈论“响应流”,但没有响应(因为还没有实际的获取)。(编辑:因为我回答了我自己的问题,所以我还编辑了 MDN 页面,所以现在有意义了。)

规格说明如下:

给定类型的 Request 对象的消费主体算法运行以下步骤:

  1. 如果此 Request 对象受到干扰,则返回一个新的 Promise,并以 TypeError 被拒绝。

  2. 设置干扰标志。

  3. 让 p 成为一个新的承诺。

  4. 并行运行这些子步骤:

    1. 令 bytes 为空字节序列。

    2. 如果请求的主体不为空,则将字节设置为从请求主体读取的结果,直到它返回流结束。

    3. 使用字节、类型和 MIME 类型运行包数据算法的结果解析 p。如果这引发了异常,则以该异常拒绝 p。

  5. 返回页码。

我不是很聪明。

(注:我知道我问的是一个非常详细的问题。我不是在问fetch/ Response/Request一般做什么。)

0 投票
3 回答
5733 浏览

javascript - 是否可以覆盖本机 fetch api 以使用所需的 Promise 库而不是本机浏览器 Promise?

这就是我的意思。

如果浏览器原生支持fetch api(例如 Chrome),那么它使用原生浏览器Promise

如果我使用另一个 Promise 库(例如bluebird),nativefetch仍然没有使用它——它使用的是本地Promise实现。

有没有办法覆盖它?

问题示例:

为什么我需要那个,你可能想知道?我希望使用库支持和原生 Promises 没有的全局拒绝事件。bluebird

0 投票
1 回答
73 浏览

firefox - 无法在 Firefox 44.0.2 的 FetchEvent 中找到客户端

我正在使用这段代码来获取客户。但它仍然是客户端不匹配。

}

0 投票
1 回答
1389 浏览

xmlhttprequest - 使用新的 Fetch API 对 JSON 进行跨域请求

我在 fetch 方面遇到了 CORS 问题,并且已经用尽了谷歌。在下面的 codepen 中,我试图点击 flickr 的 open api 来获取一些图像。你会看到两个按钮。“使用 jquery 搜索”工作正常,使用 $.getJSON。

当然,我想使用 Fetch。“使用 Fetch 搜索”不起作用。当我尝试发送相同的请求时,我收到此错误:

当我添加时mode: 'no-cors',我得到的只是一个opaque不包含任何数据的响应。

自己试试吧!http://codepen.io/morgs32/pen/OMGEpm?editors=0110

会喜欢一只手。谢谢。

0 投票
0 回答
265 浏览

javascript - Promise 拒绝 OPTIONS 请求?我应该在哪个反应生命周期方法中执行此操作

以上是我的代码 [Promise] 在 OPTIONS 请求调用后被拒绝。我只想要 GET 请求,我想绕过 OPTIONS 请求。

0 投票
2 回答
1425 浏览

javascript - react-native 加载图像时如何获取响应标头?

相同的url会返回不同的图像(随机),我需要获取响应的标题(每次也会不同),所以我不能获取两次。

我尝试使用blob,但收到一条警告说'blob' is undefined,代码如下:

那么如何在加载图像时获取标题?

0 投票
2 回答
3726 浏览

google-chrome-extension - 在 Chrome 扩展中使用时,Fetch API 不发送会话 cookie

我正在尝试制作一个 Chrome 扩展程序,它使用 Fetch API 从 Github 上的 Pull Requests 中抓取一些细节,然后在其他地方显示它们。当我尝试将它与 Github 上的非公共存储库一起使用时,我遇到了一些问题。我相信这与 CSRF 保护以及管理 Chrome 扩展程序访问会话 cookie 的规则有关。

我的扩展中有以下内容manifest.json

但是当我从我的内部运行以下内容时script/content.js

这会从 Github 产生 404 响应。使用 Chrome Inspector 的网络选项卡检查此请求,我可以看到它没有将我的 GitHub 会话标头与请求一起发送。

如果我在 Inspector 中使用 Javascript 提示发出相同的请求,我可以看到 200 响应,并且我可以看到它正在发送我的会话 cookie。

我的理解是,在 my 中指定 Github 域manifest.json意味着我的扩展程序可以访问我的内容脚本中的会话数据,这不正确吗?我应该怎么做才能对这个受保护的内容提出有效的请求?

0 投票
1 回答
8670 浏览

javascript - 无法使用 fetch api 发送删除请求

当我向某个端点发送删除请求时,例如使用来自终端的httpie

http delete http://localhost:8181/admin/applications/uspecs

我得到了一个有效的行为,{ success: true }如响应正文。但是当我这样做时

在javascript代码中,然后我得到一个

控制台上的错误。我错过了什么?我在选项请求中获得了有效的方法列表。

0 投票
3 回答
89743 浏览

javascript - 获取 API 与 XMLHttpRequest

我知道 Fetch API 使用Promises 并且它们都允许您向服务器执行 AJAX 请求。

我读过 Fetch API 有一些额外的功能,这些功能在XMLHttpRequest(和 Fetch API polyfill 中,因为它基于XHR)中不可用。

Fetch API 有哪些额外的功能?

0 投票
1 回答
322 浏览

service-worker - 如何处理不受服务人员控制的 URL

我对服务工作者的策略是,如果 url 匹配某种特定格式,那么只有服务工作者应该拦截它,否则浏览器应该像往常一样处理它,

对于所有情况,我都使用 evt.respondWith() 来拦截它并提供自定义响应,但是如果 url 不匹配任何格式我该怎么办

我有几个选项,所有选项都有效,但我不确定哪一个在逻辑上是正确的

1)什么都不做,意味着我有 if 条件来检查 fetch 方法中定义的每个格式,但如果它们不匹配我什么都不做,我没有任何“else”条件。在这种情况下,浏览器正在正常获取页面,但我不确定它是否正确,实际发生了什么,cookies 是否通过了?

2)在 else 方法中我fetch(event.request, { credentials: 'include' }); 也可以使用,我不确定是否需要在此处包含凭证子句,根据我的理解,不是服务工作者,而是浏览器在此处处理请求,因此它会自动包含 cookie。如果我在这里错了,请纠正我。

3)event.respondWith(fetch(event.request, { credentials: 'include' }));

这也有效,我认为因为我使用的是 event.respondWith,所以我需要明确地包含凭证(我再次不确定)。但我怀疑我是否需要在event.respondWith这里使用。我所知道的event.respondWith是,只有当我们想为 fetch 事件提供自定义响应时,我们才使用它。因为我们希望这些请求按原样处理,我们需要在这里使用event.respondWith吗?

我所有的困惑都来自我缺乏知识event.respondWith(),有人可以解释一下,我应该什么时候使用它?