Beheben Sie den Fehler: Rufen Sie den Dateistream-Blob basierend auf der Datei-URL ab, der Anforderungsfehler 400 (fehlerhafte Anforderung), der von Ihnen angegebene Autorisierungsmechanismus ist nicht xxx

Grund für den Fehler: Verursacht durch die Festlegung des Felds „Autorisierung“ (Tokenauthentifizierung) in den globalen Request-Interceptor-Headern . Da der Domänenname der Datei-URL keine Authentifizierung erfordert. Wenn die Autorisierung bestanden wird, wird sie überprüft, aber nicht erkannt. Wenn sie nicht übergeben wird, wird sie nicht überprüft, dh es tritt kein Fehler 400 auf gemeldet.

Fehler-Screenshot

Lösung: Wenn es sich um eine Anforderung zum Abrufen eines Dateistream-Blobs handelt, übergeben Sie das Feld „Autorisierung“ nicht .

import { request } from 'umi';

/**
 * @method 根据文件URL获取blob数据流
 * @param { String } fileUrl - 文件完整路径,如:http://xxx.png
 */
export function getBlobOfUrl(fileUrl: string) {
  return request(fileUrl, {
    method: 'GET',
    responseType: 'blob', // 设置后台返回内容类型为Blob类型
    params: {
      notAuthorization: true,
    },
  });
}

app.tsx-Datei:

requestInterceptors: [
    (url, options) => {
      if (url.includes(process.env.API_HOST_ORDER as string)) {
        return {
          url,
          options,
        };
      } else {
        let headers = {};
        // ! 获取blob文件流的一定不要传Authorization认证,否则报错400【bad request】
        if (!options?.params?.notAuthorization) {
          headers = {
            // Accept: 'application/json',
            Authorization: getToken() || '',
          };
        }
        return {
          url,
          options: { ...options, headers },
        };
      }
    },
  ],

Supongo que te gusta

Origin blog.csdn.net/qq_38969618/article/details/130320412
Recomendado
Clasificación