【问题标题】:request-promise assume http, httpsrequest-promise 假设 http, https
【发布时间】:2018-05-19 01:04:58
【问题描述】:

在 nodejs 中,当我请求使用 http 或 https 前缀时,request-promise npm 包有什么方法吗?有什么选择吗?例如,在 jquery 中,当您编写一个与“//myawesomewebsite.xom/givemedata”完全一样的 ajax 请求时,jquery 会自行假定前缀 http 或 https,并且 url 根据其变为“https://myawesomewebsite.xom/givemedata”或“http://myawesomewebsite.xom/givemedata”到请求的服务器或其他的支持。 谢谢!

【问题讨论】:

  • 也许你可以只用 http 请求,如果支持,服务器最终会用 https 重定向你
  • 就我查看 request-promise 库不默认任何内容而言,您应该明确指定您的 URL。正如所指出的,如果服务器支持重定向它可以处理它。
  • 谢谢你回答梅哈里

标签: node.js request-promise


【解决方案1】:

当我请求使用 http 或 https 前缀时,请求承诺 npm 包有什么方法吗?有什么选择吗?

没有。该功能未内置在请求承诺中。它期望一个完全限定的 URL 作为目标。在服务器端,没有像浏览器端那样的“默认值”,可能是因为浏览器在提供智能默认值的“页面”上下文中运行,但服务器没有这样的默认上下文。

您可以为 request-promise 实现一个包装器,该包装器查看传入的任何 URL,如果它以 // 为前缀,它会将其更改为您想要的默认协议。然后,您可以改用包装函数。

仅供参考,没有简单的方法可以提前确定目标服务器支持哪种协议。您必须已经知道要使用哪种协议,或者您必须实施一些尝试https 的方案,如果失败,则尝试http,但这不会像提前知道哪个一样好是要使用的适当协议。

【讨论】:

    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2023-02-07
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多