邮递员和Chrome浏览器使用不同的API响应

时间:2018-08-30 14:49:31

标签: javascript reactjs api odata postman

我一直在从邮递员那里发出一个完全相同的API请求,从本地主机上的一个React应用发出一个API请求,但是当我评估响应时,两者之间得到了不同的结果。

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

Articles?$expand=Category&$select=Category

授权已通过我已经检查过的承载令牌,并且在请求中都是正确的,并且标头和url也完全相同。

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

响应正文如下:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  

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

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