繁体   English   中英

为什么我的“ multipart / form-data”标头阻止发送预检(OPTIONS)请求?

[英]Why isn't my “multipart/form-data” header preventing preflight (OPTIONS) requests from being sent?

我正在使用Angular9。我有这些请求来获取二进制图像数据...

headersMultiPartForm = new HttpHeaders().set('Content-Type', 'multipart/form-data');
    ...
  getImage(id) {
    let api = `${this.endpoint}/person-library-image?id=${id}`;
    return this.http
      .get(api, {headers: this.headersMultiPartForm, responseType: "blob"})
      .pipe(retry(this.retry), catchError(this.handleError));
  }

    ...
results.forEach(( componentarray, key ) => {
    ...
    this.myService.getImage(id).subscribe(data => {
      ...
      this.createImageFromBlob(data, index);
      ...
    }, () => {
      ...
    });

});

我注意到这些请求要花一些时间才能完成,这似乎是因为它们正在等待OPTIONS请求完成而被阻止。 我想阻止这些预检OPTIONS请求被发送。 我以为我的“ multipart / form-data”会阻止预检请求,但显然不会...

在此处输入图片说明

当我通过右键单击并复制为CURL来检查实际请求时,我看到...

curl 'http://localhost:7071/api/person-library-image?id=127' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:81.0) Gecko/20100101 Firefox/81.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: http://localhost:4200/picture-library' -H 'Content-Type: multipart/form-data' -H 'Authorization: JWT <token>' -H 'Origin: http://localhost:4200' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache'

我有一个拦截器,添加了Authorization标头,但我不知道其他标头来自何处。 关于如何关闭它们的任何想法,这样我就可以防止这些印前检查OPTIONS请求?

我正在使用Angular9。我有这些请求来获取二进制图像数据...

headersMultiPartForm = new HttpHeaders().set('Content-Type', 'multipart/form-data');
    ...
  getImage(id) {
    let api = `${this.endpoint}/person-library-image?id=${id}`;
    return this.http
      .get(api, {headers: this.headersMultiPartForm, responseType: "blob"})
      .pipe(retry(this.retry), catchError(this.handleError));
  }

    ...
results.forEach(( componentarray, key ) => {
    ...
    this.myService.getImage(id).subscribe(data => {
      ...
      this.createImageFromBlob(data, index);
      ...
    }, () => {
      ...
    });

});

我注意到这些请求要花一些时间才能完成,这似乎是因为它们正在等待OPTIONS请求完成而被阻止。 我想阻止这些预检OPTIONS请求被发送。 我以为我的“ multipart / form-data”会阻止预检请求,但显然不会...

在此处输入图片说明

当我通过右键单击并复制为CURL来检查实际请求时,我看到...

curl 'http://localhost:7071/api/person-library-image?id=127' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:81.0) Gecko/20100101 Firefox/81.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: http://localhost:4200/picture-library' -H 'Content-Type: multipart/form-data' -H 'Authorization: JWT <token>' -H 'Origin: http://localhost:4200' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache'

我有一个拦截器,添加了Authorization标头,但我不知道其他标头来自何处。 关于如何关闭它们的任何想法,这样我就可以防止这些印前检查OPTIONS请求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM