【问题标题】:Javascript fetch not working with http://key@www.example.comJavascript 获取不适用于 http://key@www.example.com
【发布时间】:2018-05-27 02:32:44
【问题描述】:

我正在尝试访问 web-Api(确切地说是 Prestashops Web API),并且 fetch 似乎对这种格式的 url 有问题:http://SOMEKEY12345@www.example.com。在 Chrome 和 Postman 中,一切正常,但使用 fetch-API 我总是收到 401 错误。

这是我的打字稿代码:

public fetchData() {
fetch("http://SOMEKEY1234@www.example.com").then((response : Response)=>{
  response.text().then((text : string) =>console.log(text));
})

【问题讨论】:

  • 如果您使用 Fiddler(或类似工具)检查实际请求是否有任何更改?您可以运行一个 Postman 请求和一个 fetch 请求并比较这两个请求。

标签: javascript http typescript fetch-api http-status-code-401


【解决方案1】:

Fetch API 不允许在请求中使用 http://SOMEKEY1234@www.example.com 形式的 URL。具体来说,它不允许您在主机名前使用“@”字符。

如果您使用这样的 URL,它会被解释为提供用户名/密码凭据和the Fetch spec requires browsers to throw a TypeError(从而停止请求):

Request(input, init) 构造函数必须运行以下步骤:

如果 parsedURL includes credentials,则抛出 TypeError

唯一的解决方案是不要将凭据放在请求 URL 中(即请求 URL 中的主机名前不要有“@”字符)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2016-01-16
    • 1970-01-01
    • 2016-07-10
    相关资源
    最近更新 更多