尝试通过HTTP

问题描述

以下情况: 我有多个具有一些简单python http(api)服务器的linux系统。 在相同的系统上,有Firefox浏览器通过从其他地方(本地网络Web服务器)打开的ssl运行Web应用程序。 Web应用程序正尝试与此本地托管的python api服务器通信(仅在同一系统内本地)。 因此,该应用正在尝试通过http在localhost / 127.0.0.1 / [:: 1]上发送发布请求。 这是内容混合的情况,因为应用最初是通过SSL(托管在其他服务器上)运行的。当使用127.0.0.1时,Firefox允许使用本地主机,我必须更改安全设置(我只是出于测试目的进行了设置)。 一切都失败,并显示以下错误: 尝试获取资源时出现TypeError:NetworkError 测试查询:

fetch ('http://127.0.0.1:8080',{method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify(data)}).then(response => {console.log(response);});

Axios截获异常,但是返回的错误响应对象为null。 数据是一个非常基本的3字段json对象。

问题是,这些系统运行的是Firefox 57-60版本。 我可以在Windows 10上本地安装的FF 60.2.2上“成功”重现同样的问题,所以这似乎确实是Firefox问题。

然而,最新的Firefox版本可以在不对JS代码进行任何更改的情况下完美地通信(在Windows 10上)。 Python服务器接受并支持CORS。

我无法更新这些浏览器。

现在,我已经使用GET查询进行了一些测试。而且令人惊讶的是,它们确实起作用了! 喜欢:

fetch ('http://127.0.0.1:8080').then(response => {console.log(response);});

成功。 这:

fetch ('http://127.0.0.1:8080',body: JSON.stringify(data)}).then(response => {console.log(response);});

失败:

TypeError: NetworkError when attempting to fetch resource.

我会怀疑python服务器,但是它可以在Windows 10上使用最新的FF版本。此外,在Firefox开发人员工具中,我在网络上看不到任何localhost POST尝试的内容,但是我看到这些测试GET就像Firefox甚至不会出于某种奇怪的原因尝试将POST发送到本地http。因此,也许我在某个地方犯了一个错误-为什么在这些较旧的FF版本中,GET和POST都无法发送?

任何提示都会很好。

解决方法

好吧,这必须是此python api服务器和CORS支持(最终是旧浏览器和新浏览器之间的CORS兼容性)。 在我的提取查询中添加选项“ mode:'no-cors'”即可解决问题

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...