首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用‘If-None-Match’获取:"etag“标题总是在中返回200

使用‘If-None-Match’获取:"etag“标题总是在中返回200
EN

Stack Overflow用户
提问于 2019-09-03 20:23:45
回答 2查看 2K关注 0票数 5

在一个react本地应用程序中,我遇到了一个非常奇怪的问题,在这个应用程序中,使用etag进行简单的提取总是返回200而不是预期的304

代码语言:javascript
复制
const response = await fetch(url, {
  method: 'GET',
  headers: {
    'If-None-Match': etag
  },
});

其中etag类似于"33a64df551425fcc55e4d42a148795d9f25f89d4"

当我直接通过邮递员/失眠症之类的东西提出这个请求时,它是有效的,我得到了适当的304响应。

在Reactotron中检查应用程序时,我可以看到网络请求头似乎是正确的:

如果我将JSON请求复制为cURL,就会得到以下内容:

卷曲"if-none-match:"33a64df551425fcc55e4d42a148795d9f25f89d4"“-H https://url/to/api

只需稍作修改,只显示标题:

curl -sD - -o /dev/null -H -H https://url/to/api

它也只返回一个200,但是如果我像这样转义etag周围的引号,它可以工作:

curl -sD - -o /dev/null -H -H https://url/to/api

我真的很困惑,因为我尝试过以下所有的变体:

代码语言:javascript
复制
'If-None-Match': etag
'If-None-Match': `"${etag}"`
'If-None-Match': `\"${etag}\"`
'If-None-Match': '"' + etag + '"'

没有用,我做错了什么?

将相同的提取请求放入html文件中,并在浏览器中进行测试,以满足预期的304状态。

EN

回答 2

Stack Overflow用户

发布于 2021-07-08 19:05:20

我得到了同样的问题,使用Axios在一个反应本土应用程序。我也尝试了相反的‘如果-匹配’和得到200,所以这就好像头甚至不在那里。

代码语言:javascript
复制
const query = {
  method: 'GET',
  url: `someurl`,
  headers: {
    Authorization: `Bearer ${token}`,
    'If-Match': etag,
  },
};

let response = await axios(query);
票数 0
EN

Stack Overflow用户

发布于 2021-09-15 17:05:02

在引擎盖下,receives使用的是NSURLCache,即使它从上游接收到304,至少从我在网上读到的内容也会返回200。使用或app中的另一个此类代理查看一下,您将看到网络上的流量,然后它才会到达您的应用程序。谷歌还揭示了许多围绕缓存的边缘情况,比如默认情况下显然没有缓存私有响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57778288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档