Fetch API & HTTP Response opaque All In One


Fetch API & HTTP Response opaque All In One

Promise {: SyntaxError: Unexpected end of input at

  const promise = await fetch(url, {
    // method: 'GET', // *GET, POST, PUT, DELETE, etc.
    // mode: 'cors', // no-cors, *cors, same-origin
    // cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
    // credentials: 'same-origin',
    // credentials: 'include',
    method: 'GET',
    // mode: 'no-cors',
    // ?  A no-cors request makes the response type opaque. Opaque means your frontend JavaScript code can’t see the response body or headers.
    // responseType: 'arraybuffer',
    // responseType: 'blob',
    headers: {
      // 'Accept': type,
      'Content-Type': type,
      // 'Content-Type': 'application/octet-stream',
      // 'Accept': 'video/mp4',
      // 'Accept': 'application/json',
      // 'Content-Type': 'application/json;charset=utf-8'
      // 'Content-Type': 'application/json',
      // 'Content-Type': 'application/x-www-form-urlencoded',
      // ...headers,
    },
  }).then(res => {
    if(type.includes('json')) {
      const json = res.json();
      console.log('json =', json);
      return json;
    } else {
      const buffer = res.arrayBuffer();
      console.log('buffer =', buffer);
      return buffer;
    }
  }).then(data => {
    console.log('data =', data);
    const blob = new Blob(
      [data],
      {'type' : type},
    );
    const urlBlob = URL.createObjectURL(blob);
    dom.src = urlBlob;
    link.href = urlBlob;
    link.innerText = urlBlob;
  }).catch(err => {}).finally(() => {});

https://stackoverflow.com/questions/43317967/handle-response-syntaxerror-unexpected-end-of-input-when-using-mode-no-cors

HTTP Response & type: 'opaque',

// res = Response {type: 'opaque', url: '', redirected: false, status: 0, ok: false, …}body: (...)bodyUsed: falseheaders: Headers {}ok: falseredirected: falsestatus: 0statusText: ""type: "opaque"url: ""[[Prototype]]: Response
fetch.js:48 buffer = Promise {: ArrayBuffer(0)}

ReadableStream

type: "basic"

url: "https://cdn.xgqfrms.xyz/HTML5/Blob/2022-04-07-sh.mp4

// fetch.response = Response
fetch.js:38 fetch.response = Response {type: 'basic', url: 'https://cdn.xgqfrms.xyz/HTML5/Blob/2022-04-07-sh.mp4', redirected: false, status: 200, ok: true, …}body: ReadableStreamlocked: true[[Prototype]]: ReadableStreamcancel: ? cancel()getReader: ? getReader()length: 0name: "getReader"arguments: (...)caller: (...)[[Prototype]]: ? ()[[Scopes]]: Scopes[0]locked: truepipeThrough: ? pipeThrough()pipeTo: ? pipeTo()tee: ? tee()constructor: ? ReadableStream()Symbol(Symbol.toStringTag): "ReadableStream"get locked: ? locked()[[Prototype]]: ObjectbodyUsed: trueheaders: Headers {}ok: trueredirected: falsestatus: 200statusText: ""type: "basic"url: "https://cdn.xgqfrms.xyz/HTML5/Blob/2022-04-07-sh.mp4"[[Prototype]]: ResponsearrayBuffer: ? arrayBuffer()blob: ? blob()body: ReadableStreambodyUsed: (...)clone: ? clone()formData: ? formData()headers: (...)json: ? json()ok: (...)redirected: (...)status: (...)statusText: ""text: ? text()type: "basic"url: "https://cdn.xgqfrms.xyz/HTML5/Blob/2022-04-07-sh.mp4"constructor: ? Response()Symbol(Symbol.toStringTag): "Response"get body: ? body()get bodyUsed: ? bodyUsed()get headers: ? headers()get ok: ? ok()get redirected: ? redirected()get status: ? status()get statusText: ? statusText()get type: ? type()get url: ? url()[[Prototype]]: Object

refs


Flag Counter

?xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有??xgqfrms, 禁止转载 ???,侵权必究??!