【问题标题】:Postman and Chrome different API responsesPostman 和 Chrome 不同的 API 响应
【发布时间】:2019-02-05 13:41:11
【问题描述】:

我一直在发出完全相同的 API 请求,一个来自邮递员,另一个来自位于我的机器上的本地主机中的反应应用程序,但是当我评估响应时,两者之间得到不同的结果。

请求包含 odata 命令,如下所示:

Articles?$expand=Category&$select=Category

授权是通过我已经检查过的不记名令牌进行的,并且在两个请求中都是正确的,并且标头和 url 也完全相同。

唯一不同的是 chrome 在一个数组中缺少一些条目的响应,该数组应该包含这些属于 Javascript 对象的类别字段。

响应正文如下所示:

{
    "@odata.context": ... , value: [
        {
            Category: ...
        }
    ]
}

缺少的是邮递员中的一些类别对象,因此邮递员基本上按预期工作。

由于某种原因,请求在网络选项卡中出现两次,一次作为 OPTIONS,一次作为 GET,我也不知道为什么。有人知道在这种情况下罪魁祸首是什么吗?

【问题讨论】:

    标签: javascript reactjs api odata postman


    【解决方案1】:

    邮递员和浏览器是不同的东西。显然,您正在查询的服务正在区分请求并根据请求的来源返回略有不同的结果。请求的详细信息(标头等)可能略有不同。

    由于某种原因,请求在网络选项卡中出现两次,一次作为 OPTIONS,一次作为 GET,我也不知道为什么。有人知道在这种情况下罪魁祸首是什么吗?

    那是因为您是从 Web 浏览器发出请求,因此同源策略生效。浏览器通过 OPTIONS 向服务器发送“预检”请求,服务器显然返回适当的 CORS 标头以允许主请求,然后发送主 GET 请求。见:

    【讨论】:

    • 所以很可能问题出在服务器上。
    • @OhLongJohnson - 这取决于。您需要检查所发出请求的全部详细信息以确保确定。也许 Postman 发送了一些标头,但 Chrome 没有发送,反之亦然,服务器使用它来区分。
    • 已经尝试通过 curl 命令将来自开发工具的请求复制到邮递员中,但它仍然不同,就像我在邮递员中手动执行的一样。
    • 我也有类似的情况。我尝试将浏览器发送 cookie 的标头复制并粘贴到邮递员中,这使得响应与浏览器相同。没有它,我似乎得到了一个旧的缓存响应
    猜你喜欢
    • 2017-05-09
    • 2021-10-06
    • 2020-07-17
    • 2017-12-29
    • 2020-07-07
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多