在 nodeJS 中使用 -I、-H 标志重新创建 cURL 请求
recreating cURL request with -I, -H flags in nodeJS
在命令行上,我可以执行如下请求:curl -I -H "Fastly-Debug: 1"
并且它将 return 来自 CDN 服务的很多有用信息 URL,在这种情况下,Fastly:
cache-control: public, max-age=0, must-revalidate
last-modified: Tue, 20 Apr 2021 21:17:46 GMT
etag: "4c5cb3eb0ddb001584dad329b8727a9a"
content-type: text/html
server: AmazonS3
surrogate-key: /v3.6/tutorial/nav/alerts-and-monitoring/
accept-ranges: bytes
date: Fri, 30 Apr 2021 20:50:15 GMT
via: 1.1 varnish
age: 0
fastly-debug-path: (D cache-lga21923-LGA 1619815815) (F cache-lga21940-LGA 1619815815)
fastly-debug-ttl: (M cache-lga21923-LGA - - 0)
fastly-debug-digest: 04c3e527819b6a877de6577f7461e132b97665100a63ca8f667d87d049092233
x-served-by: cache-lga21923-LGA
x-cache: MISS
x-cache-hits: 0
x-timer: S1619815815.944515,VS0,VE136
vary: Accept-Encoding
content-length: 65489
如何在节点中执行此操作?
这是我的尝试:
const headers = {
'Fastly-Key': environment.getFastlyToken(),
'Accept': 'application/json',
'Content-Type': 'application/json',
'Fastly-Debug': 1
};
async retrieveSurrogateKey(url) {
console.log("this is the url: ", url)
try {
request({
method: `GET`,
url: url,
headers: headers,
}, function(err, response, body) {
if (err){
console.trace(err)
}
console.log(request.headers)
})
} catch (error) {
console.log("error in retrieval: ", error)
}
}
有没有办法让我传递 -I 和 -H 标志?
-H
(header) 标志允许您在 cURL 中指定自定义 header。您的代码已经做到了这一点 - 太棒了!剩下的就是模拟 -I
(head)标志。
来自 -I 选项的 cURL 联机帮助页:
Fetch the headers only! HTTP-servers feature the command HEAD which this uses to get nothing but the header of a document.
要使用 HEAD 方法,您需要指定它而不是 GET:
method: `HEAD`
最后,服务器在响应中返回的header可以从response.headers
中获取。
在命令行上,我可以执行如下请求:curl -I -H "Fastly-Debug: 1"
并且它将 return 来自 CDN 服务的很多有用信息 URL,在这种情况下,Fastly:
cache-control: public, max-age=0, must-revalidate
last-modified: Tue, 20 Apr 2021 21:17:46 GMT
etag: "4c5cb3eb0ddb001584dad329b8727a9a"
content-type: text/html
server: AmazonS3
surrogate-key: /v3.6/tutorial/nav/alerts-and-monitoring/
accept-ranges: bytes
date: Fri, 30 Apr 2021 20:50:15 GMT
via: 1.1 varnish
age: 0
fastly-debug-path: (D cache-lga21923-LGA 1619815815) (F cache-lga21940-LGA 1619815815)
fastly-debug-ttl: (M cache-lga21923-LGA - - 0)
fastly-debug-digest: 04c3e527819b6a877de6577f7461e132b97665100a63ca8f667d87d049092233
x-served-by: cache-lga21923-LGA
x-cache: MISS
x-cache-hits: 0
x-timer: S1619815815.944515,VS0,VE136
vary: Accept-Encoding
content-length: 65489
如何在节点中执行此操作?
这是我的尝试:
const headers = {
'Fastly-Key': environment.getFastlyToken(),
'Accept': 'application/json',
'Content-Type': 'application/json',
'Fastly-Debug': 1
};
async retrieveSurrogateKey(url) {
console.log("this is the url: ", url)
try {
request({
method: `GET`,
url: url,
headers: headers,
}, function(err, response, body) {
if (err){
console.trace(err)
}
console.log(request.headers)
})
} catch (error) {
console.log("error in retrieval: ", error)
}
}
有没有办法让我传递 -I 和 -H 标志?
-H
(header) 标志允许您在 cURL 中指定自定义 header。您的代码已经做到了这一点 - 太棒了!剩下的就是模拟 -I
(head)标志。
来自 -I 选项的 cURL 联机帮助页:
Fetch the headers only! HTTP-servers feature the command HEAD which this uses to get nothing but the header of a document.
要使用 HEAD 方法,您需要指定它而不是 GET:
method: `HEAD`
最后,服务器在响应中返回的header可以从response.headers
中获取。