如何解决按照重定向然后发布
我有一个可行的解决方案,但我想有人有更好的方法来做到这一点。
好的,我正在尝试通过 POST
请求获取数据。
- 第 1 步 - 我使用单个 API 调用登录。我拿回了一块饼干,但我想这不是我需要的一切。
- 第 2 步 - 我尝试通过
POST
调用从服务中获取数据,但它重定向了我大约 4 次以获取我需要的所有 cookie,以便进行有效的会话。问题是我尝试发出的请求需要POST
方法,但在所有重定向之后,它使用GET
方法将我发送回相同的 URL。当然,我收到一条错误消息作为响应,指出不允许使用该方法。
这是我的工作解决方案,但它似乎过于复杂。 (自下而上阅读代码更有意义。)我基本上告诉它遵循所有重定向,除非它引导我返回原始请求,在这种情况下将其更改为新的 POST
请求。
const handleResponse = (err,response,body) => {
if (err) throw new Error(err);
if ([302,301].includes(response.statusCode)) return;
if (body) doSomethingLater = body;
console.log(`getData status code: ${response.statusCode}`);
};
const postRedirect = response => {
if ([302,301].includes(response.statusCode) && response.headers.location !== response.request.originalRequest.url) {
return true;
}
session(response.request.originalRequest,handleResponse);
return false;
};
const originalRequest = {
method: 'POST',url: `https://notmy.website.com/getData`,json: { someStuff },};
const requestOptions = {
...originalRequest,followAllRedirects: true,followRedirect: postRedirect,originalRequest,};
session(requestOptions,handleResponse);
有没有更好的方法来做到这一点?提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。