来自react应用程序的带有 JSON 负载的 HTTP POST 请求返回 net::ERR_SSL_PROTOCOL_ERROR(chrome)

IT技术 ruby-on-rails google-chrome reactjs ssl puma
2021-04-26 23:15:50

我有一个react应用程序,它对端点http://localhost:3020/schema/filter进行 API 调用以下是我与 POST 请求一起传递的有效负载。

`let filterParams = {
            "filter": {
                "and": [{
                    "field": "name",
                    "operator": "LIKE",
                    "value": "Core"
                }, {
                    "field": "created_at",
                    "operator": "GREATER_THAN",
                    "value": "05/26/2017"
                }, {
                    "field": "created_at",
                    "operator": "LESS_THAN",
                    "value": "07/02/2017"
                }]
            }
        }`

`  let response = await apiService.post('https://localhost:3020/schema/filter', filterParams)
`

API SERVER 是带有 puma 服务器的 rails 应用程序。服务器控制台响应

2017-07-04 12:04:05 +0545:HTTP 解析错误,格式错误的请求 ():

API SERVER 配置为响应 JSON 有效负载。每当我尝试使用有效负载 POST 请求时,浏览器都会响应

OPTIONS https://localhost:3020/schema/filter net::ERR_SSL_PROTOCOL_ERROR 在 chrome 浏览器控制台中。

同样,safari 控制台返回

Fetch API cannot load https://localhost:3020/schema/filter. An SSL error has occurred and a secure connection to the server cannot be made.

好像我在使用 SSL 或证书时遇到了问题。我尝试删除浏览器缓存、cookie 和证书本身。仍然没有运气。

任何帮助表示赞赏。

1个回答

这是一个错误,因为您的服务正在发布,https://localhost但您的 rails 服务器很可能没有使用 https 运行。

如果您的 React 应用程序,您应该执行以下操作:

var apiBase = process.env === 'PRODUCTION' ? 
    'https://www.productionapp.com/' : 'http://localhost:3000/'

let response = await apiService.post(apiBase + '/schema/filter', filterParams)