我有以下使用NodeJS的简单GET请求:
const axios = require("axios");
axios.get("http://federalregister.gov/api/v1/public-inspection-documents.json")
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
当我使用http://而不使用www时,为什么此请求有效?例如,以下代码在浏览器中有效,但不适用于axios:
const axios = require("axios");
axios.get("www.federalregister.gov/api/v1/public-inspection-documents.json")
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
答案 0 :(得分:1)
http://
-是协议。无论您是在浏览器中还是在Node.js代码中尝试,它都是必需的。在浏览器中,当您输入www.federalregister.gov
时,浏览器将自动为您加上“ http://”。但是在代码中,您将需要使用以协议(http://或https://)开头的url,否则该请求将失败。
federalregister.gov
和www.federalregister.gov
都是指向同一服务器的域。不管您使用哪一个。如您在nslookup结果中看到的,两个域都指向相同的IP:184.72.241.172
。
> server 8.8.8.8
DNS request timed out.
timeout was 2 seconds.
Default Server: [8.8.8.8]
Address: 8.8.8.8
> set type=A
> federalregister.gov
Server: [8.8.8.8]
Address: 8.8.8.8
Non-authoritative answer:
Name: federalregister.gov
Address: 184.72.241.172
> www.federalregister.gov
Server: [8.8.8.8]
Address: 8.8.8.8
Non-authoritative answer:
Name: www.federalregister.gov
Address: 184.72.241.172