托管在localhost上时,使用NetworkError获取API拒绝(仅限Firefox)

Ano*_*ard 10 javascript firefox fetch-api

我在使用fetch API时看到Firefox上的奇怪行为.我不知道我做错了什么,或者我是否错过了一些文档,我不想做什么.

如果我在localhost上托管下面的页面,Firefox会拒绝获取,并且TypeError: NetworkError when attempting to fetch resource.我在dev工具或Wireshark中看不到任何获取请求.似乎没有任何进一步的调试可用于诊断.

通过"托管在localhost",我的意思是由本地Web服务器(在这种情况下为nginx)托管,而不是从文件系统托管.例如,地址栏显示" http://localhost/fetch_localhost_error.html ".

托管在同一页面http://jsbin.com/yowebiyigi/edit?html,output或任何其他端点给出预期输出-文本出现在div,我看到了获取请求在开发工具正在取得进展.

Chrome在两种情况下都能正常工作,这意味着本地主机和远程服务器都为CORS等正确配置(但FF似乎永远不会查询远程).

我在Windows 7上都尝试了48和Nightly(51).不幸的是我现在无法访问任何其他操作系统.

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <div id="output"></div>
  <div id="error"></div>
  <script>
 var result = fetch('http://www.randomtext.me/api/')

 result.then(
    function(response){
        return response.json()
    })
 .then(
   function (response) {
        document.getElementById("output").innerHTML = response.text_out;
   })
 .catch(
    function(error){
        document.getElementById("error").innerHTML = error;
    });

  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这非常令人沮丧,因为我无法在本地开发基于fetch的解决方案.任何人都可以对正在发生的事情发光吗?

Hen*_*uni 16

在我的情况下,这是该死的AdBlock.浪费了3个小时......
希望有人会早点发现这个.

  • 在这里超过3个小时,但众神知道如果不是这个答案,我会浪费多少时间.谢谢. (3认同)
  • 非常感谢。以我为例,它是uBlock Origin,从那里我可以在其记录器和白名单中看到阻止。 (3认同)
  • 就我而言,这是隐私Bad (3认同)

Ano*_*ard 4

结果发现我的配置有问题。

network.http.referer.XOriginPolicy
Run Code Online (Sandbox Code Playgroud)

应设置为 0,否则获取将失败。我把它设置为 1,原因我不记得了。

  • 对于任何想知道这是什么的人来说 - 这是一个通过 `about:config` 提供的 Firefox 配置选项。默认情况下它是“0”,所以这可能不是您的问题。 (4认同)