首页 > 解决方案 > 在 HTTP 拦截器中克隆 HTTP 请求后找不到 404

问题描述

我正在开发一个 Angular 应用程序并尝试解决 IE 缓存问题。Web API 是在 .NET Core 中开发的。从许多文章中,我发现可以通过在 HTTP 请求标头中不添加缓存来解决该问题。这就是我所拥有的

const clonedReq = req.clone({
  headers: new HttpHeaders({
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache'
  })
});

但是一旦我使用上面的代码,所有的 API 调用都会出现 404 错误。

以下是开发者工具中捕获的 HTTP 请求:

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: cache-control
Access-Control-Request-Method: GET
Connection: keep-alive
Host: localhost:4900
Origin: http://localhost:6521

标签: angulartypescripthttp.net-core

解决方案


如果您有没有任何身份验证令牌的获取请求,则在浏览器中打开 url 粘贴 url 选项卡并检查您是否得到结果。

您可能遇到以下问题之一 - 1. 您请求的 API 的 URL 错误 2. 请求的 API 未实现或不可用。

为什么在 HTTP 克隆中使用两个标头?

const clonedReq = req.clone({
  headers: req.headers.set('Cache-Control','no-cache') . // Header 1
  headers: new HttpHeaders({                             // Header 2
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Pragma' : 'no-cache' //IE Ajax cache
  })
});

推荐阅读