我对很多这种技术都是新手,但我认为我已经诊断出了我的问题,需要一些帮助。我在SO上看到过很多关于这个问题的帖子,但是没有一个有效,尽管它们帮助我诊断了这个问题。
我相信问题是当我发送标题Content-Type
w/我的飞行前w/ Axios,它失败了.这可能是由于小写/大写?错误有小写,但我在服务器上都试过了,没有运气。
基本上,如果我不指定任何头,Axios使用json
作为内容类型,它可以工作,但一旦我指定Content-Type
,我的pre-flight就会失败(即使我认为post会工作..)。
这里是elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.cors.enabled : true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS,HEAD,GET,POST,PUT,DELETE
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type,Content-Length
#http.cors.allow-credentials: true
这是我的JS,我正在Visual Studio 2017中测试BTW W/Office加载项解决方案,我认为它使用IE作为浏览器。
主要功能:
var URL = "https://elasticsearch:9200/users/_search"
const data = {
"query": {
"match": {
"name": "freesoftwareservers"
}
}
};
Do_Axios('get', URL, data, null, false)
Do_Axios('post', URL, data, null, false)
Do_Axios
:
async function Do_Axios(method, URL, data, headers, withCredentials) {
return axios({
method: method,
url: URL,
withCredentials: withCredentials,
//contentType: 'application/json', // does nothing
//data: JSON.stringify(data), //Causes urlformencoded which is wrong
data: data, //caues type to be json and I get error
headers: {
//"Content-Type": "application/json"
},
})
.then(function (response) {
console.log("Axios " + method + " response:");
console.log(response)
return response;
})
.catch(function (error) {
console.log(error);
});
}
注意:如果我注解掉//data,我可以得到/post,但是post不会运行我的查询。如果我取消注解data
,那么Axios
使用urlformencoded
,但这不起作用。
目前,我已经能够通过urlformencoded
查询搜索API,但我想修复我正确POST的能力,以解决未来的错误。我不确定如果我打开一个请求,问题应该指向Axios
还是Elasticsearch
。
1条答案
按热度按时间oknwwptz1#
我发现了这些片段,这是需要添加到我的NGINX代理配置中的魔法,这就是问题所在:
https://gist.github.com/sahilsk/b16cb51387847e6c3329