【问题标题】:404 not found after cloning HTTP request in HTTP interceptor在 HTTP 拦截器中克隆 HTTP 请求后找不到 404
【发布时间】:2019-03-16 02:55:02
【问题描述】:

我正在开发一个 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

【问题讨论】:

  • 您是否使用 chrome 开发工具测试网络调用?只需查看网络选项卡并检查请求网址
  • 是的 url 完全没问题。没有拦截器,一切正常。

标签: angular typescript http .net-core


【解决方案1】:

如果您有没有任何身份验证令牌的获取请求,请在浏览器中打开 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
  })
});

【讨论】:

  • 都不是这样。我能够得到直接点击 url 的响应。
  • 为什么在克隆方法中使用 2 个标头?答案已更新。
  • 只要删除'Cache-Control': 'no-cache'就可以了
  • 什么原因,我还是想让IE不缓存api响应
  • 关注本文medium.com/@tltjr/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多