Questions tagged «fetch-api»

Fetch API是XHR的改进替代品,用于发出异步HTTP请求,同时更好地管理重定向以及与CORS和Service Worker的交互。

14
如何使用Fetch发布x-www-form-urlencoded请求?
我有一些要以表单编码形式发布到服务器的参数: { 'userName': 'test@gmail.com', 'password': 'Password!', 'grant_type': 'password' } 我正在这样发送我的请求(当前没有参数) var obj = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', }, }; fetch('https://example.com/login', obj) .then(function(res) { // Do stuff with result }); 如何在请求中包含表单编码的参数?

8
javascript fetch-无法在“响应”上执行“ json”:主体流已锁定
当请求状态大于400(我尝试过400、423、429个状态)时,提取无法读取返回的json内容。浏览器控制台中显示以下错误 未捕获(承诺)TypeError:无法在“ Response”上执行“ json”:主体流已锁定 我显示了返回的响应对象的内容,如下所示: 但是几个月前我仍然可以使用它。 我的问题如下: 这仅仅是Chrome浏览器的行为还是提取标准的更改? 有什么方法可以获取这些状态的身体含量吗? PS:我的浏览器版本是Google Chrome 70.0.3538.102(正式版本)(64位)

10
提取API请求超时?
我有一个fetch-api POST要求: fetch(url, { method: 'POST', body: formData, credentials: 'include' }) 我想知道默认的超时时间是多少?以及如何将其设置为3秒或不确定的秒之类的特定值?

8
上传进度指示器以获取?
我正在努力查找使用fetch实现上传进度指示器的文档或示例。 这是我到目前为止找到的唯一参考,其中指出: 进度事件是一项高级功能,暂时无法获取。您可以通过查看Content-Length标头并使用直通流监视接收到的字节来创建自己的字节。 这意味着您可以显式地处理响应,而无需进行Content-Length其他操作。当然,即使Content-Length存在,也可能是谎言。使用流,您可以根据需要处理这些谎言。 我将如何编写发送的“用于监视字节的直通流”?如果有什么不同,我正在尝试执行此操作以增强从浏览器到Cloudinary的图像上传。 注意:我对Cloudinary JS库不感兴趣,因为它取决于jQuery,而我的应用程序则不需要。我只对使用本机javascript和Github的polyfill 进行流处理所必需的感兴趣。fetch https://fetch.spec.whatwg.org/#fetch-api


6
允许使用HTML5获取API的Access-Control-Allow-Origin标头
我正在使用HTML5提取API。 var request = new Request('https://davidwalsh.name/demo/arsenal.json'); fetch(request).then(function(response) { // Convert to JSON return response.json(); }).then(function(j) { // Yay, `j` is a JavaScript object console.log(JSON.stringify(j)); }).catch(function(error) { console.log('Request failed', error) }); 我能够使用普通的json,但无法获取上述api网址的数据。它引发错误: 提取API无法加载https://davidwalsh.name/demo/arsenal.json。请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ http:// localhost ”。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。
87 html  api  url  fetch-api 


2
使用多部分表单数据获取帖子
我正在获取这样的URL: fetch(url, { mode: 'no-cors', method: method || null, headers: { 'Accept': 'application/json, application/xml, text/plain, text/html, *.*', 'Content-Type': 'multipart/form-data' }, body: JSON.stringify(data) || null, }).then(function(response) { console.log(response.status) console.log("response"); console.log(response) }) 我的API期望数据是multipart/form-data此类数据,因此我正在使用content-type这种类型...但是它给我一个状态码为400的响应。 我的代码有什么问题?

8
如何使用window.fetch下载文件?
如果要下载文件,在then下面的方框中应该怎么做? function downloadFile(token, fileId) { let url = `https://www.googleapis.com/drive/v2/files/${fileId}?alt=media`; return fetch(url, { method: 'GET', headers: { 'Authorization': token } }).then(...); } 请注意,代码在客户端。


5
fetch()是否不发送标题?
我从浏览器发送这样的POST请求: fetch(serverEndpoint, { method: 'POST', mode: 'no-cors', // this is to prevent browser from sending 'OPTIONS' method request first redirect: 'follow', headers: new Headers({ 'Content-Type': 'text/plain', 'X-My-Custom-Header': 'value-v', 'Authorization': 'Bearer ' + token, }), body: companyName }) 在请求到达我的后端时,它既不包含X-My-Custom-Header也不包含Authorization标头。 我的后端是Firebase的Google Cloud函数(基本上只是Node.js端点),如下所示: exports.createCompany = functions.https.onRequest((req, res) => { let headers = ['Headers: …

8
提取给出一个空的响应主体
我有一个react / redux应用程序,我正在尝试向服务器发送一个简单的GET请求: fetch('http://example.com/api/node', { mode: "no-cors", method: "GET", headers: { "Accept": "application/json" } }).then((response) => { console.log(response.body); // null return dispatch({ type: "GET_CALL", response: response }); }) .catch(error => { console.log('request failed', error); }); 问题是响应主体在.then()函数中为空,我不确定为什么。我在网上检查了示例,看起来我的代码应该可以正常工作,因此我在这里显然缺少了一些东西。关键是,如果我在Chrome的开发工具中选中了“网络”标签,则发出请求,并且收到了我要查找的数据。 有人能照亮这个吗? 编辑: 我尝试转换响应。 使用.text(): fetch('http://example.com/api/node', { mode: "no-cors", method: "GET", headers: { "Accept": "application/json" …

4
提取:如果状态不正常,则拒绝承诺并捕获错误?
这是我要去的事情: import 'whatwg-fetch'; function fetchVehicle(id) { return dispatch => { return dispatch({ type: 'FETCH_VEHICLE', payload: fetch(`http://swapi.co/api/vehicles/${id}/`) .then(status) .then(res => res.json()) .catch(error => { throw(error); }) }); }; } function status(res) { if (!res.ok) { return Promise.reject() } return res; } 编辑:诺言不会被拒绝,这就是我试图找出的。 我正在Redux和redux-promise-middleware中使用此访存polyfill。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.