首页 > 解决方案 > axios response.data 始终为空,但邮递员工作

问题描述

我正在尝试制作一个打开一个位 URL 并获取标题的扩展:

http://bit[dot]ly/30YbIyD

邮递员遵循重定向并为我获取结果文档。

当我尝试使用 Axios 时,虽然重定向似乎发生了,但我得到了空的响应数据。

第一个请求收到指向“stackoverflow.com”的 301。在那个请求中,我们得到“200 SUCCESS”但是数据部分是空的。

axios({
    'url': 'http://bit[dot]ly/30YbIyD',
    method: 'get',
    maxRedirects: 5,
    headers: {
      'Content-Type': 'text/html',
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET',
    },
    withCredentials: true,
  })
  .then((res) => {
    console.log("Response", res)
  })
  .catch((err) => {
    console.log("Error with fetch: ", err)
  });

没有错误消息,但我希望看到与 Postman 返回相同的结果;最终文件。

我还在浏览器控制台中收到这些警告:

Cross-Origin Read Blocking (CORB) blocked cross-origin response <URL> with MIME type text/html. See <URL> for more details.

与http://bit.ly/上的跨站点资源关联的 cookie设置为没有该SameSite属性。未来版本的 Chrome 将仅提供带有跨站点请求的 cookie,前提是它们使用SameSite=None和设置Secure。您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032中查看更多详细信息。

以下是邮递员发送的标题:https ://imgur.com/765Cz30

标签: javascriptgetrequestcorsaxios

解决方案


使用以下步骤:
1. 使用 Axios 调用http://bit[dot]ly/30YbIyD
2. 从响应头中找到位置。(通过 Axios 访问响应头
3. 调用 Location 中的 URL 以获取实际内容。

*** 浏览器和 Postman 正在执行多个请求以获取内容。我在我的 Java 应用程序中使用了上述步骤。以下代码供参考

if ( HttpStatus.SC_MOVED_TEMPORARILY  == statusCode ) {
            location = method.getResponseHeader("Location").getValue();
            if (sLog.isDebugEnabled()) {
                sLog.debug("location: " + location);
            }                                                                  
}

推荐阅读