标签: fetch-api

如何使用其他URL复制Request对象?

我正在编写一个包装器fetch,我想在发出请求之前向URL添加内容,例如识别查询参数.我无法弄清楚如何Request使用与原始URL不同的URL 制作给定对象的副本.我的代码看起来像:

// My function which tries to modify the URL of the request
function addLangParameter(request) {
    const newUrl = request.url + "?lang=" + lang;
    return new Request(newUrl, /* not sure what to put here */);
}

// My fetch wrapper
function myFetch(input, init) {
    // Normalize the input into a Request object
    return Promise.resolve(new Request(input, init))
        // Call my modifier function
        .then(addLangParameter)
        // Make the actual request
        .then(request => fetch(request));
}
Run Code Online (Sandbox Code Playgroud)

我尝试将原始请求作为第二个arguent放到Request构造函数中,如下所示:

function …
Run Code Online (Sandbox Code Playgroud)

javascript fetch-api

11
推荐指数
1
解决办法
1548
查看次数

如何使用fetch()和WhatWG流来获取文件上载进度

注意:我不是在寻找任何替代方案.我知道这可以通过XMLHttpRequest来完成.我也不关心浏览器支持.我只想了解新的/即将推出的标准.

我有一个  File对象,我可以使用像这样的fetch上传它:

fetch(url, {
    method: "PUT",
    body: fileObject,
});
Run Code Online (Sandbox Code Playgroud)

如何从中获取上传进度?

据我所知body,fetch选项可以是ReadableStream.那么也许有一种方法可以将File对象包装到ReadableStream并从中获取进度状态?

例如.这样的事情

fetch(url, {
    method: "PUT",
    body: asReadableStream(fileObject, onProgress),
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

javascript fetch-api whatwg-streams-api

11
推荐指数
1
解决办法
1788
查看次数

是否真的没有办法从失败的js获取请求中获取响应主体?

如果请求失败,新的js fetch API将失败(400):

fetch(uri).catch(function(err) {
   console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,真的没有办法获得响应机构吗?例如,检查错误代码.

编辑:我创建了一个js小提琴:https://jsfiddle.net/4x4xLwqo/,它调用这个mockbin端点:http://mockbin.org/bin/d87acbb0-526e-4d66-aea4-b827d9c35031/view

编辑2:更新jsfiddle以使用更好的端点:https://jsfiddle.net/4x4xLwqo/2/

javascript fetch-api

10
推荐指数
1
解决办法
4282
查看次数

如何使用PHP中的fetch()API POST方法获取数据?

我正在尝试使用fetch()API POST方法来获取PHP中的POST数据.

这是我尝试过的:

var x = "hello";
fetch(url,{method:'post',body:x}).then(function(response){
    return response.json();
});
Run Code Online (Sandbox Code Playgroud)

PHP:

<?php
if(isset($_GET['x']))
{
    $get = $_GET['x'];
    echo $get;
}
?>
Run Code Online (Sandbox Code Playgroud)

它是否正确?

fetch urlfetch fetch-api

10
推荐指数
5
解决办法
2万
查看次数

在laravel中的Http Post使用fetch api给出TokenMismatchException

我正在尝试使用fetch api创建一个http帖子.即使我发送令牌,我在VerifyCsrfToken.php中收到错误TokenMismatchException.如何使用fetch api拨打电话?(我也尝试过使用jQuery ajax并且它的工作正常)继承人fetch api代码

      var URL = $("#form").attr("action");
      var token = $("input[name='_token']").val();
      var group_id = $(this).val();
  fetch(URL, {
       method: 'post',
       mode: 'no-cors',
       body: JSON.stringify({
           'csrf-token': token,
           'group_id': group_id
       })
     }).then(function(response){
           return response.json();
       })  .then(function(json){



       })
         .catch(function(error){


         });
Run Code Online (Sandbox Code Playgroud)

我已经在这样的表单中添加了令牌

<form id="form" action="{{ url('api/getcoursebygroup') }}">
    <input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" />
  </form>
Run Code Online (Sandbox Code Playgroud)

这个jQuery ajax调用工作正常:

$.ajax({
          type: "POST",
          url:  URL,
          data: { "group_id" : group_id, "_token" : token },
          dataType: 'json'
      }).done(function (result) {

        if(result.code == …
Run Code Online (Sandbox Code Playgroud)

javascript jquery laravel fetch-api

10
推荐指数
3
解决办法
7302
查看次数

托管在localhost上时,使用NetworkError获取API拒绝(仅限Firefox)

我在使用fetch API时看到Firefox上的奇怪行为.我不知道我做错了什么,或者我是否错过了一些文档,我不想做什么.

如果我在localhost上托管下面的页面,Firefox会拒绝获取,并且TypeError: NetworkError when attempting to fetch resource.我在dev工具或Wireshark中看不到任何获取请求.似乎没有任何进一步的调试可用于诊断.

通过"托管在localhost",我的意思是由本地Web服务器(在这种情况下为nginx)托管,而不是从文件系统托管.例如,地址栏显示" http://localhost/fetch_localhost_error.html ".

托管在同一页面http://jsbin.com/yowebiyigi/edit?html,output或任何其他端点给出预期输出-文本出现在div,我看到了获取请求在开发工具正在取得进展.

Chrome在两种情况下都能正常工作,这意味着本地主机和远程服务器都为CORS等正确配置(但FF似乎永远不会查询远程).

我在Windows 7上都尝试了48和Nightly(51).不幸的是我现在无法访问任何其他操作系统.

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <div id="output"></div>
  <div id="error"></div>
  <script>
 var result = fetch('http://www.randomtext.me/api/')

 result.then(
    function(response){
        return response.json()
    })
 .then(
   function (response) {
        document.getElementById("output").innerHTML = response.text_out;
   })
 .catch(
    function(error){
        document.getElementById("error").innerHTML = error;
    });

  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这非常令人沮丧,因为我无法在本地开发基于fetch的解决方案.任何人都可以对正在发生的事情发光吗?

javascript firefox fetch-api

10
推荐指数
2
解决办法
5600
查看次数

来自浏览器的带有正文的异步 GET 请求

好吧,我知道这是一个坏主意,不应该这样做,但为了这个问题,请假设没有其他方法 - 我得到的 API 端点需要以空对象作为主体的 GET 请求。

有没有办法从浏览器执行异步请求?我正在使用在幕后axios使用的库, MDN说当 HTTP 方法是 时会擦除主体。我尝试使用本机,但它在浏览器中给我这个错误: XMLHttpRequestsendGETfetchTypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.

有什么办法可以做到吗?

javascript get xmlhttprequest fetch-api axios

10
推荐指数
1
解决办法
2万
查看次数

如何在 Selenium(使用 Python)中使用 Chrome DevTools 协议来捕获 HTTP 请求和响应?

我知道它Fetch Domain用于此目的,但我不知道如何准确地实现它。在 Selenium python 中,我使用以下代码来启用requestPaused事件的发出。

driver.execute_cdp_cmd("Fetch.enable",{})
driver.get('https://www.example.com')
Run Code Online (Sandbox Code Playgroud)

但我不知道如何处理requestPaused事件(我需要调用 1fulfillRequestcontinueRequest/ continueWithAuth)。结果,我的程序停止工作。如果有人能为我提供一个例子来帮助我理解它是如何工作的,我真的很感激。

selenium google-chrome-devtools fetch-api chrome-devtools-protocol selenium4

10
推荐指数
1
解决办法
1万
查看次数

TypeScript 中缺少 AbortController

我正在尝试在 TypeScript 中使用AbortController

给定这个小文件:

const controller = new AbortController();
Run Code Online (Sandbox Code Playgroud)

我从 TypeScript 编译器收到以下错误:

src/testAbort.ts:1:24 - error TS2304: Cannot find name 'AbortController'.

1 const controller = new AbortController();
                         ~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

TypeScript 有关于AbortController 的文档。我还从 Github 发现了一个问题,该问题已通过合并包含 AbortController 类型定义的拉取请求得到解决。所以它应该是可用的。

我的tsconfig.json包含:

src/testAbort.ts:1:24 - error TS2304: Cannot find name 'AbortController'.

1 const controller = new AbortController();
                         ~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 升级到最新的 TypeScript 3.7.5
  • 将tsconfig 中的lib和选项设置为.target"ESNext"
  • 通过访问它global.AbortController

typescript fetch-api abortcontroller

10
推荐指数
1
解决办法
9046
查看次数

Axios 可以在新的 next.js 13 中使用,而不是扩展的 next fetch api 版本吗?

  1. 大家好,我可以将 axios 与 next.js 13 一起使用,并且仍然获得带有缓存和重新验证配置的扩展 fetch api 版本的相同结果吗?

  2. axios 会走向这个网络标准的方向吗?

  3. 我真的很喜欢 axios.intereceptors 功能,我应该使用下一个中间件吗?

能给我 2 美分吗?

My first stackoverflow question, even coding for 2 years (still) ... please vote up so I can unlock the mid dev super powers tks

`export default async function Page() {
  // revalidate this data every 10 seconds at most
  const res = await **axios.get**('https://...', { next: { revalidate: 10, cache: 'force-cache' .... } });
  const data = res.json();
  // ...
}

// does …
Run Code Online (Sandbox Code Playgroud)

middleware web-standards fetch-api axios next.js13

10
推荐指数
2
解决办法
2万
查看次数