如何确保我传递给 node-fetch 请求的 headers 是正确的?
How to make sure headers that im passing to node-fetch request are correct?
我正在尝试重写一个函数,该函数使用 request-promise 库执行 get 请求,使其基于 node-fetch:
这是request-promise中的方法:
import { default as request } from 'request-promise';
async function sendGet(cookies, url) {
const options = {
method: 'GET',
uri: url,
headers: {
Accept: 'text/html,application/xhtml+xml,application/xml',
'Upgrade-Insecure-Requests': '1',
'Accept-Encoding': 'gzip, deflate, sdch, br',
'Accept-Language': 'en-US,en;q=0.8',
Host: 'some.url.com',
Connection: 'keep-alive',
cookie: cookies,
},
json: true,
resolveWithFullResponse: true,
simple: false,
followRedirect: false,
};
try {
const response = await request(getNextOptions);
return {
cookies: response.headers['set-cookie'],
location: response.headers['location'],
};
} catch (e) {
throw e;
}
}
当更改为 node-fetch 时,它给出以下响应错误:
“在此服务器上找不到请求的 URL /session/auth/failure。
此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。"
import fetch from 'node-fetch';
async function sendGet(cookies, url) {
const headers = {
'Upgrade-Insecure-Requests': '1',
'Accept-Language': 'en-US,en;q=0.8',
Host: 'some.url.com',
Connection: 'keep-alive',
cookie: cookies,
}
try {
const result = await fetch(url, {
headers,
compress: true
});
const body = await result.json();
return {
cookies: body.headers.raw()['set-cookie'],
location: body.headers.get('location'),
};
} catch (e) {
throw e;
}
我认为我通过的 headers 可能有问题,但经过几天的研究后我无法让它工作。 headers 的一些解释:
- 我没有使用
Accept
header 因为 node-fetch 默认添加 Accept: */*
- 我使用
compression: true
而不是 'Accept-Encoding': 'gzip, deflate, sdch, br'
在此先感谢您的帮助!
您可以使用 https://requestbin.com/ 之类的东西来测试您的请求。
基本上,您创建新的请求 BIN,然后使用 BIN url 而不是您的真实 url,看看您在那里请求什么
我正在尝试重写一个函数,该函数使用 request-promise 库执行 get 请求,使其基于 node-fetch:
这是request-promise中的方法:
import { default as request } from 'request-promise';
async function sendGet(cookies, url) {
const options = {
method: 'GET',
uri: url,
headers: {
Accept: 'text/html,application/xhtml+xml,application/xml',
'Upgrade-Insecure-Requests': '1',
'Accept-Encoding': 'gzip, deflate, sdch, br',
'Accept-Language': 'en-US,en;q=0.8',
Host: 'some.url.com',
Connection: 'keep-alive',
cookie: cookies,
},
json: true,
resolveWithFullResponse: true,
simple: false,
followRedirect: false,
};
try {
const response = await request(getNextOptions);
return {
cookies: response.headers['set-cookie'],
location: response.headers['location'],
};
} catch (e) {
throw e;
}
}
当更改为 node-fetch 时,它给出以下响应错误:
“在此服务器上找不到请求的 URL /session/auth/failure。 此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。"
import fetch from 'node-fetch';
async function sendGet(cookies, url) {
const headers = {
'Upgrade-Insecure-Requests': '1',
'Accept-Language': 'en-US,en;q=0.8',
Host: 'some.url.com',
Connection: 'keep-alive',
cookie: cookies,
}
try {
const result = await fetch(url, {
headers,
compress: true
});
const body = await result.json();
return {
cookies: body.headers.raw()['set-cookie'],
location: body.headers.get('location'),
};
} catch (e) {
throw e;
}
我认为我通过的 headers 可能有问题,但经过几天的研究后我无法让它工作。 headers 的一些解释:
- 我没有使用
Accept
header 因为 node-fetch 默认添加Accept: */*
- 我使用
compression: true
而不是'Accept-Encoding': 'gzip, deflate, sdch, br'
在此先感谢您的帮助!
您可以使用 https://requestbin.com/ 之类的东西来测试您的请求。
基本上,您创建新的请求 BIN,然后使用 BIN url 而不是您的真实 url,看看您在那里请求什么