2016-08-05 8 views
0

私は、プラットフォーム制限のために、TextRazorというAPIからAJAX XMLHttpにカールコードを変換しようとしています。私はコミュニティが同様の質問から多くの解決策を試しましたが、データを元に戻すことも、「400:Bad Request」を取得することもできません。それが重要な場合は、APIを呼び出すドキュメントから次のようになります。あなたのサポートのためのCURLからAJAX XMLHttpへ

var xhttp = new XMLHttpRequest(); 
var url = "https://api.textrazor.com/"; 
var params = "extractors=entities&text=Spain's stricken Bankia expects to sell..."; 
xhttp.open("POST", url, true); 

xhttp.setRequestHeader("x-textrazor-key", "YOUR_API_KEY"); 
xhttp.setRequestHeader("Content-length", params.length); 

xhttp.onreadystatechange = function() { 
if(xhttp.readyState == 4 && xhttp.status == 200) { 
    alert(xhttp.responseText); 
} 
} 

xhttp.send(params); 

ありがとう:

curl -X POST \ 
-H "x-textrazor-key: YOUR_API_KEY" \ 
-d "extractors=entities,entailments" \ 
-d "text=Spain's stricken Bankia expects to sell off..." \ 
https://api.textrazor.com/ 

私の現在のAJAX XMLHTTPコードは次のようになります!

答えて

0

あなたはsame origin policyに感染しています。

原産地間の要求を作成してカスタムヘッダーを追加しているため、ブラウザは要求する前にpreflight OPTIONS requestとしています。

リクエストしているサーバーは、OPTIONSリクエストに応答する準備ができていないため、400が返されます。

この修正するには:

  • を彼らはCORS
  • をサポートする必要があります彼らは、代替手段を提供する必要があり、そのようなJSONPなどのデータを取得することを意味する(推奨しません、私たちは今、CORSを持っている)
  • あなたが作るべきではありませんブラウザからサーバーに直接要求する。