2017-08-30 15 views

答えて

1

Microsoft Translator Text APIは、少なくとも応答でAccess-Control-Allow-Originヘッダを送信するように見えるんように、少なくとも最低限今、CORSをサポートするために表示されます。

$ curl -i -H 'Origin: http://example.com' \ 
    'https://api.microsofttranslator.com/v2/http.svc/Translate?appid=foo&text=hello&from=en&to=de' 

HTTP/1.1 400 Bad Request 
Content-Length: 220 
Content-Type: text/html; charset=utf-8 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: X-MS-Trans-Info 
X-MS-Trans-Info: 0642.V2_Rest.Translate.4E779D02 
Date: Wed, 30 Aug 2017 09:07:34 GMT 

<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: appId</p><p>Message: Invalid appId&#xD; 
Parameter name: appId</p><code></code><p>message id=0642.V2_Rest.Translate.4E779D02</p></body></html> 

私は個人的にwith-テストするために有効なappidを持っていませんあなたがしなければしかし、私はあなたがそれがうまくいく見つけることだと思う:

の代わりにappidパラメータを使用して認証する場合。

これらのヘッダとの問題は、彼らがプリフライトOPTIONS要求を行うには、ブラウザをトリガします、次のとおりです。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

そして、プリフライトを誘発するそれらのAPIエンドポイントへの呼び出しを行うと問題が、彼らドンでありますブラウザがプリフライトを成功として見られるように、OPTIONSリクエストに応答しているようです。 https://docs.microsofttranslator.com/text-translate.html#!/default/post_TranslateArray

私は、ドキュメントは、エンドポイントがapplication/xmlまたはtext/xmlContent-TypePOSTを期待するので、そのエンドポイントは、1が動作しないこと、正しい方法でプリフライトOPTIONSに応答しない場合と言うことに気づきます。

要求にContent-Type: application/xmlContent-Type: text/xmlヘッダを追加すると、間違いなくPOST前にプリフライトOPTIONSを行うには、ブラウザの引き金となるためです。

+0

正解!私はヘッダ 'Authorization'を使っていました。ドキュメントには、あなたがちょうど言ったすべてを言及する必要があります – seza443

+0

ここで情報が助けてくれてうれしいです。私がそこを見たところでは、CORSのサポートやブラウザで実行されているフロントエンドJavaScriptからこれらのエンドポイントを呼び出す方法についての情報は全く見つかりませんでした。だから、私はそれらのドキュメントは、今よりももっと言及すべきだと思う... – sideshowbarker

関連する問題