首页 > 解决方案 > Elasticseacrh 和 fetch:不支持 Content-Type 标头 [text/plain;charset=UTF-8]

问题描述

我正在尝试使弹性搜索服务器运行,但无法运行。

我在 localhost:9200 上运行了 Elasticsearch,在 localhost:3310 上运行了一个快速服务器,我正在运行 node.js 和我的代码(html 和 js)

我正在使用 fetch 向 elasticsearch 发出 http 请求以检索数据。如果我使用带有 url 的 lite 搜索,例如:

http://localhost:9200/movies2/_search?q=fields.title:Lord

有用。

但是当我尝试使用 fetch 请求时,例如:

const source= "http://localhost:9200/movies2/_search?" 
var myInit = { method: 'POST',
                    mode: 'cors',
                    cache: 'default' ,
                    header : {
                        "Access-Control-Allow-Origin" : "*",
                        "Content-Type": "application/json"
                    },
                    body : JSON.stringify({
                        "query" : {
                            "match" : {[searchDSL]: x}
                        }
                    })
            };
 let reqLite = await fetch(source, myInit)

它没有。我有这个错误:

error: "Content-Type header [text/plain;charset=UTF-8] is not supported"

是的,我是菜鸟,我不知道为什么我会收到这条消息。我从我的请求、标头和 elasticsearch .yml 文件中授权了 CORS:

http.cors.enabled: true
http.cors.allow-origin: "*"

你能解释并教我为什么它不起作用吗?

标签: node.jsapiexpresselasticsearchfetch

解决方案


推荐阅读