我正在尝试发送一个ajax调用到带有屏蔽身份验证的elasticsearch
$.ajax({
url: 'http://localhost/test2/test/_search',
type: 'POST',
//contentType: 'application/json; charset=UTF-8',
crossDomain: true,
dataType: 'json',
username: "admin",
password: "admin123",
data: JSON.stringify(queryBody),
success: function(response) {
alert(response)
var data = response.hits.hits;
var titleArray = [];
//alert(data.length);
if (data.length > 0) {
/*
if (data.length > 5)
data.length=5;
*/
for (var i = 0; i < data.length; i++) {
if(data[i].fields.Title[0].indexOf(settings.fieldValue) > -1)
{
titleArray.push(data[i].fields.DocumentID[0]+":"+data[i].fields.Title[0]);
}
}
responseS(titleArray);
titleArray=[];
} else { }
},
error: function(jqXHR, textStatus, errorThrown) {
var jso = jQuery.parseJSON(jqXHR.responseText);
alert('section', 'error', '(' + jqXHR.status + ') ' + errorThrown + ' --<br />' + jso.error);
}
});
但我得到:
邮政http://localhost:9200/test2/test/_search401(未经授权)
我也试过:
$.ajax({
url: 'http://admin:admin123@localhost/test2/test/_search',
type: 'POST',
//contentType: 'application/json; charset=UTF-8',
crossDomain: true,
dataType: 'json',
data: JSON.stringify(queryBody),
success: function(response) {
alert(response)
var data = response.hits.hits;
var titleArray = [];
//alert(data.length);
if (data.length > 0) {
/*
if (data.length > 5)
data.length=5;
*/
for (var i = 0; i < data.length; i++) {
if(data[i].fields.Title[0].indexOf(settings.fieldValue) > -1)
{
titleArray.push(data[i].fields.DocumentID[0]+":"+data[i].fields.Title[0]);
}
}
responseS(titleArray);
titleArray=[];
} else {
}
},
error: function(jqXHR, textStatus, errorThrown) {
var jso = jQuery.parseJSON(jqXHR.responseText);
alert('section', 'error', '(' + jqXHR.status + ') ' + errorThrown + ' --<br />' + jso.error);
}
});
但是我得到了同样的401错误。
接下来我尝试:
$.ajax({
url: 'http://localhost/test2/test/_search',
type: 'POST',
//contentType: 'application/json; charset=UTF-8',
crossDomain: true,
dataType: 'json',
data: JSON.stringify(queryBody),
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa("admin:admin123"));
}, success: function(response) {
alert(response)
var data = response.hits.hits;
var titleArray = [];
//alert(data.length);
if (data.length > 0) {
/*
if (data.length > 5)
data.length=5;
*/
for (var i = 0; i < data.length; i++) {
if(data[i].fields.Title[0].indexOf(settings.fieldValue) > -1)
{
titleArray.push(data[i].fields.DocumentID[0]+":"+data[i].fields.Title[0]);
}
}
responseS(titleArray);
titleArray=[];
} else {
}
},
error: function(jqXHR, textStatus, errorThrown) {
var jso = jQuery.parseJSON(jqXHR.responseText);
alert('section', 'error', '(' + jqXHR.status + ') ' + errorThrown + ' --<br />' + jso.error);
}
});
但现在我得到了
无法加载XMLHttpRequesthttp://localhost:9200/test2/test/_search.飞行前响应中的访问控制允许标头不允许请求标头字段授权。localhost/:1未捕获语法错误:意外的标记u
通过ajax调用向elastic发送用户名和密码的正确方法是什么?
这是我的elasticsearch.yml
action.disable_delete_all_indices: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization, X-Requested-With, Content-Type, Content-Length"
http.cors.allow-credentials: true
bootstrap.mlockall: true
# For reference: https://www.elastic.co/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html
# controls how much heap space is allocated to fielddata. When you run a query that requires access to new field values,
# it will load the values into memory and then try to add them to fielddata. If the resulting fielddata size would
# exceed the specified size, other values would be evicted in order to make space.
indices.fielddata.cache.size: 40%
# The fielddata circuit breaker limits the size of fielddata to 60% of the heap, by default.
indices.breaker.fielddata.limit: 60%
# The request circuit breaker estimates the size of structures required to complete other parts of a request,
# such as creating aggregation buckets, and limits them to 40% of the heap, by default.
indices.breaker.request.limit: 40%
# The total circuit breaker wraps the request and fielddata circuit breakers to ensure that the combination
# of the two doesn’t use more than 70% of the heap by default.
indices.breaker.total.limit: 70%
#shield.enabled: false
shield:
authc:
realms:
native1:
type: native
order: 0
realms:
esusers:
type: esusers
order: 1
files:
users: ElasticSearch\elasticsearch-2.3.1\elasticsearch-2.3.1\config\shield\users
users_roles: ElasticSearch\elasticsearch-2.3.1\elasticsearch-2.3.1\config\shield\users_role
解决此问题的方法是将CORS配置为接受Authoration
标头到您的elasticsearch.yml
文件:
http.cors.allow-headers: "Authorization, X-Requested-With, Content-Type, Content-Length"
还要确保在elasticsearch中有以下三个设置。yml文件:
http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-credentials: true
我试图在Symfony中基于这个文档构建一个json身份验证机制:https://symfony.com/doc/current/security/json_login_setup.html 这是我的保安,亚姆 这是我在安全控制器中的方法登录 这是我的登录表 下面您可以看到我发送给控制器的AJAX请求 我收到200状态从服务器,但什么也没发生。安全认证机制完全没有反应。而ajax中的成功方法是不调
我已经在我的xamarin Android应用程序中实现了脸书认证,一切都很好。我从facebook获得令牌,并使用firebase rest Api的sigin方法,我能够sigin到firebase,并从firebase Api收到一个访问令牌,作为JWT。但是,当我想在我的Web Api核心上使用这个访问令牌时,它总是返回not authenticated。我的Web Api核心使用下面基于
问题内容: 如何在Elasticsearch中定义安全性访问?我有elasticsearch-head插件,但是您的访问不需要任何安全性。 问题答案: 不再积极支持此答案中提到的插件。 elasticsearch中没有内置的访问控制。因此,您需要设置一个反向代理(这是一个博客文章,介绍如何设置nginx),使用第三方的Elasticsearch插件之一,例如https://github.com/A
我正在使用Firebase Google登录。它可以通过USB调试完美地工作。但当我生成签名的APK时,它停止工作。无法登录。在Android5.1上使用它
我的jwt身份验证有问题。 我试图从rest api获取模板列表,但是当我试图访问标题'Authorization'时,值为NULL。下面是我的代码: 前缀和令牌都设置好了,当我将它们记录在控制台中时,我可以看到它们。
在浏览器中直接键入下面的url,它可以工作, 但是,当我使用相同的url,用于selenium网络驱动程序测试时,它连接到 以及请求HTTP身份验证。我是否需要更改chrome浏览器中的任何设置,或调整默认配置文件?