javascript - 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/5088147346030592和https://www.chromestatus.com/feature/5633521622188032中查看更多详细信息。
以下是邮递员发送的标题:https ://imgur.com/765Cz30
解决方案
使用以下步骤:
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);
}
}
推荐阅读
- html - 使用 CSS 缩放时如何修复图像和文本的失真?
- visual-studio-code - 编辑器内的 VS Code 搜索,无需翻转
- node.js - 过滤来自特定用户的反应 discord.js
- python - 在熊猫中保留一对行数据
- c# - 创建一个文本文件并且无法识别创建的文件所在的位置
- android - Keepsynced(true) 和 Firebase Listener 之间的区别?当活动被破坏时,我们是否需要将 Keepsynced 设置为 False?
- python - 使用 input() 函数在字符串迭代旁边打印变量
- php - 获取 URL 中斜线之间的变量
- python - 如果不为空,则发回模板中的错误列表
- git - 更改提交者作者姓名