Node.js 遵循重定向然后发布
我有一个可行的解决方案,但我想有人有更好的方法来解决这个问题 好的,我正试图通过Node.js 遵循重定向然后发布,node.js,node-request,Node.js,Node Request,我有一个可行的解决方案,但我想有人有更好的方法来解决这个问题 好的,我正试图通过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(`get
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);
- 步骤1-我使用单个API调用登录。我拿回了一块饼干,但我想这不是我所需要的一切
- 第2步-我尝试通过
调用从服务获取数据,但它会重定向我大约4次,以获取有效会话所需的所有cookie。问题是我试图发出的请求需要POST
方法,但在所有重定向之后,它使用POST
方法将我发送回同一URL。一、 当然,在响应中会得到一条错误消息,指出该方法是不允许的GET
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);
有更好的方法吗?提前谢谢