首页 > 解决方案 > Angular - 无法下载 zip 文件

问题描述

我有一个角应用程序,它按预期工作,除了能够从网络路径下载 zip 文件。

我收到以下错误消息:“ CORS 策略已阻止从源 ' http://localhost:4200 ' 访问 'file://IPAddress/d$/***/Output.zip' 处的 XMLHttpRequest:跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。"

这是我用来下载 zip 文件的函数:

downloadFile(filePath: string) {
    return this.http.get(filePath, {
      responseType: 'arraybuffer'
    }).subscribe(data => {
      const blob = new Blob([data], {
        type: 'application/zip'
      });
      const url = window.URL.createObjectURL(blob);
      window.open(url);
    });
  }

重要的是要指出,通过在 IIS 8.5 上托管 Angular 应用程序,我也面临同样的问题。这是 IIS 8.5 中属于 Angular 应用程序的 web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/ApplicationName/"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

你能帮忙解决这个问题吗?

标签: angulariis

解决方案


这看起来像一个 CORS 问题。

IIS需要发送HeaderAccess-Control-Allow-Origin: *

也许这有助于在 IIS 中启用它: https ://enable-cors.org/server_iis7.html


推荐阅读