2016-10-26 3 views
1

私はElasticSearchでオートコンプリートjquery関数を使用しています。クロスオリジンリクエストがブロックされました:同じ原点ポリシーで、http:// localhost:9200/test12/test3/_search?でリモートリソースを読み取ることができませんか?

クロスオリジン要求がブロックされました:同じソースポリシーがリモートリソースを読み取ることを許可しません。http://localhost:9200/test12/test3/_search?prettyで、次のエラーが表示されます。 (理由:CORSヘッダー「Access-Control-Allow-Origin」がありません)。

は、ここで私はまた、それがうまくいきませんでした'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 
    }); 
}); 

です。

私はjsonp代わりjsonのをしようとすると、私は、サーバー上の

(私のコードは、JSONないJSONPものを期待しているので、正常です)

構文エラーを取得する:私は、

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 

STILL問題を解決していない

+0

'Access-Control- * 'ヘッダーは**応答**ヘッダーです。彼らはサーバーから来る必要があります – Phil

+1

["No 'Access-Control-Allow-Origin'ヘッダーが要求されたリソースに存在します]](http://stackoverflow.com/questions/20035101/no-access-control -allow-origin-header-present-on-the-requested-resource) – Phil

+0

SERVERでクロスオリジンのサポートを有効にします。ブラウザーは、サーバーが許可しない限り、クロスオリジン要求を許可しません。 – jfriend00

答えて

1

ブラウザのアドオンを使用すると、http応答を変更してCORSをどこでも有効にすることができます。

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

クローム:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

サファリ:ちょうど>を無効にクロスオリジンの制限を開発するために行く、すべてのアドオンをインストールする必要はありません。 Safariで[開発]メニューを使用していない場合は、次の手順に従ってください。

関連する問題