Javascript fetch无法使用http://key@www.example.com

时间:2017-12-13 08:57:42

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

我正在尝试访问web-Api(确切地说是Prestashops Web API),并且fetch似乎与此格式的网址有问题: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));
})

1 个答案:

答案 0 :(得分:1)

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

如果您使用此类网址,则会将其解释为提供用户名/密码凭据,以及the Fetch spec requires browsers to throw a TypeError(从而停止请求):

  

Request(input, init)构造函数必须执行以下步骤:
  ...
  如果 parsedURL includes credentials,则抛出TypeError

唯一的解决方案是不要在请求URL中放置凭据(也就是说,请求URL中的主机名之前没有" @"字符)。