使用AngularJS和ElasticSearch对飞行前的响应无效(重定向)
我正在开发Angular 1.6.3应用程序,它使用elasticsearch.js库查询远程服务器上运行的elasticsearch 5.4实例。最近,我们的应用程序开始出现问题,当它最初接触ElasticSearch以查找数据时,它收到了几个飞行前无效(重定向)错误的使用AngularJS和ElasticSearch对飞行前的响应无效(重定向),angularjs,elasticsearch,Angularjs,elasticsearch,我正在开发Angular 1.6.3应用程序,它使用elasticsearch.js库查询远程服务器上运行的elasticsearch 5.4实例。最近,我们的应用程序开始出现问题,当它最初接触ElasticSearch以查找数据时,它收到了几个飞行前无效(重定向)错误的响应。目前,此问题仅在Chrome中发生: 开发者工具中请求的屏幕截图: 这个错误似乎是随机发生的,当用户以Chrome的匿名模式或其他浏览器(如Firefox)访问应用程序时不会发生 在做了一些研究之后,我发现这个OPTIO
响应。目前,此问题仅在Chrome中发生:
开发者工具中请求的屏幕截图:
这个错误似乎是随机发生的,当用户以Chrome的匿名模式或其他浏览器(如Firefox)访问应用程序时不会发生
在做了一些研究之后,我发现这个OPTIONS
请求是一个飞行前请求,浏览器发出请求,询问服务器是否可以发送实际的POST
,其中包含我想要查询的ElasticSearch。发生预飞行的原因是,我试图使用application/json
作为Content-Type
标题进行POST,这不是Content-Type
标题的“标准”值之一
我的问题是-我如何解决这个问题?我已在elasticsearch.yml
中更改了CORS设置,但无效:
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, Authorization"
我还尝试为每个elasticsearch请求更改elasticsearch.js内容类型
标题,但每个请求都会继续发送application/json
,就像设置不听我输入的内容一样:
var client = elasticsearch.Client({
hosts: [{
host: 'es-proxy.company.net',
port: 80,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}]
});
Chrome DevTool net internals事件页面中失败的选项
请求的屏幕截图:
任何帮助都将不胜感激。谢谢。问题的原因可以在选项
请求底部附近的Chrome DevTool net Internal event(Chrome开发工具网络内部事件)页面中看到,其中显示Chrome\u EXTENSION\u REDIRECTED\u request
。一个Chrome扩展随机将我的请求重定向到ElasticSearch,有效地取消了它们。由于它是由我的公司(通过企业策略)安装的Chrome扩展,因此无法移动,因此我能够将ElasticSearch主机添加到扩展的白名单中