代码之家  ›  专栏  ›  技术社区  ›  Harrison Cramer

NodeJS GET请求中的Http与www

  •  0
  • Harrison Cramer  · 技术社区  · 6 年前

    我使用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);
          });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Boney    6 年前

    http:// -是协议。无论您是在浏览器中还是在Node.js代码中尝试,它都是必需的。在浏览器中,输入 www.federalregister.gov ,浏览器将自动为您添加“http://”。但在代码中,您需要url以协议(http://或https://)开头,否则请求将失败。

    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