我有一个端点,它返回一个 csv 数据集,该数据集将使用saveas保存, Blob AngularJS 前端在 Angular 8 挣扎时工作正常。 这是我的 Angular 8 实现

 const headers = new HttpHeaders({
            Accept: 'text/csv',
        });
        const options = { headers };
        this.httpClient
            .post<ExportCsvSettingsViewDto>(this.appConfigService.buildApiUrl(this.loadPath(batchId)), csvDto, options)
            .subscribe((fileResult: any) => {
                const file = new Blob([fileResult], { type: 'text/csv' });
                saveAs(file, this.fileName + '.csv');
            });

这会导致HttpErrorResponse声明: Object {error: SyntaxError: Unexpected token 。 在 JSON at positio..., text: "1.112.373;en-US Date Time UTC;Date Local Time;Bat..."}

我怀疑这是因为HttpClient将响应视为JSON而不是"text/csv"那些是请求标头:

Connection: keep-alive
Content-Length: 141
Pragma: no-cache
Cache-Control: no-cache
Accept: text/csv
Content-Type: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9

和响应头:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/csv
Expires: 0
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Content-Length: 191147

我试图将请求标头中的"responseType"明确设置为"text/csv"但这是不可能的。 对此有何想法?

#1楼 票数:4

如果有人关心:我的怀疑是正确的:响应被认为是json类型。 设置responseType='text'通过这样做:

  const options = { headers, responseType: 'text' as any };

我认为这实际上是一个大问题

  ask by yBother translate from so

未解决问题?本站智能推荐:

1回复

覆盖 Angular2 中 HttpClient 生成的 request-id http 标头

我有一个简单的方法,它使用 HttpClient 将 HTTP POST 请求发送到我的后端 API。 代码片段: 当我在本地主机中运行代码时,我可以在浏览器中看到生成的 Guid。 当我将更改部署到 Azure App 服务并在浏览器中打开开发人员工具(在 Firefox 和 Chrome
1回复

无法在 Angular 中看到添加到 HTTP 请求的标头

继大致这个答案,并与角文档检查头操纵,我增加了以下拦截器类(如图所示这里)。 注意。 它被调用和对请求对象的其他操作(例如使其成为 HTTPS 等)工作。 但是,添加/附加和更新/设置标题似乎都没有显示。 出于某种原因,显示的对象不包含操纵的标题。 我得到以下信息。 HttpHeade
1回复

Angular4 HttpHeaders设置不正确

我试图在不使用Angular(4.4.6) HttpClient的情况下设置POST请求。 但是,更改请求的标头的行为不正确。 这是代码: 结果看起来像这样: 如您所见,未设置“ Content-Type”属性,尽管密钥存储在Access-Control-Reques
1回复

以角度 9 获取响应标头变量

我正在尝试获取我通过后端在我的标头上声明的变量,但此代码不起作用: 在我的后端:(express + knex): async login(req, res) { const { user_name, email } = req.body;
2回复

Angular httpHeaders post 方法无法设置参数

我正在尝试使用以下方法从 RestAPI 获取 authtoken。 相同的 url、Params 和 Headers 会从邮递员那里返回正确的响应。 但在角度我收到 401 未经授权的错误。 请帮我理解我做错了什么? 我无法理解为什么我的头都在里面httpHeaders lazyUpdate对象内
1回复

无法使用HttpRequest 作为http客户端请求中的选项

我试图将我的角度项目从HttpModule迁移到HttpClientModule ,但是我对标头请求有麻烦,所以很多次我都以为我明白这里发生了什么。 所以我现在想做的是一次向HttpClient移动一点,这意味着我没有使用HttpInterceptor ,而是尝试使用HttpModule的想法
1回复

使用HTTPClient的身份验证处理

我有一个连接到Web API的类,因此我正在像这样的类顶部初始化一个静态HTTPClient。 https://docs.microsoft.com/enus/azure/architecture/antipatterns/improper-instantiation/ 该类中的所
2回复

使用HttpClient时如何读取具有指定字符集编码的HTTP响应标头

响应头中有一个中文单词。 我必须使用UTF-8字符编码读取标题。 但是我不知道如何在httpclient设置此编码。 如何告诉标题使用哪种字符编码?