跨域请求阻塞:同源策略不允许读取远程资源http://localhost:9200/test12/test3/_sear



我有一个自动完成的jquery函数ElasticSearch。当我输入第一个字母时,我得到以下错误。

跨域请求阻塞:同源策略不允许读取远程资源http://localhost:9200/test12/test3/_search?pretty。(原因:CORS头' Access-Control-Allow-Origin '丢失).

代码

$(function () {
    $("#keyword").autocomplete({
        source: function (request, response) {
            $.ajax({
                 url: "http://localhost:9200/test12/test3/_search?pretty",
                data: "q=firstname:" + request.term +"*" , 
                dataType: "json", 
                type: "POST", 
                headers: {
                'Access-Control-Allow-Origin':  'http://localhost'
            },
                crossDomain: true,    
                jsonpCallback:"callback", 
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    console.log(data); 
                    response($.map(data.d, function (item) {
                        return {

                            label: item.split('-')[0],
                            val: item.split('-')[1]
                        }
                    }))
                },
                error: function (response) {
                    alert('error'+ response.responseText);
                },
                failure: function (response) {
                    alert('failure'+response.responseText);
                }
            });
        },
        select: function (e, i) {
            $("[id$=keyword]").val(i.item.val);
        },
        minLength: 1
    });
});

我也试过'Access-Control-Allow-Origin': '*',但没有工作。

当我尝试jsonp而不是json时,我得到

语法错误(这是正常的,因为我的代码期望json而不是json的东西)

服务器上的

: I did,

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin$
/etc/apache2/apache2.conf

仍然没有解决问题

使用允许用户通过更改http响应来在任何地方启用CORS的浏览器插件。

Firefox: https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

铬:https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf/

Safari:不需要安装任何插件,只需要去开发>禁用跨域限制。如果在Safari中没有开发菜单,请按照以下说明操作:

最新更新