2017-08-30 2 views

Antwort

1

Die Microsoft Translator Text API erscheint zumindest minimal zu jetzt CORS unterstützen, dass sie zumindest scheint die Access-Control-Allow-Origin Header in Antworten zu senden:

$ 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> 

Ich habe nicht persönlich eine gültige appid mit- zu testen aber wenn Sie das tun, ich denke, Sie werden feststellen, es funktionieren wird:

Wenn kann auch arbeiten für die https://docs.microsofttranslator.com/text-translate.htmlPOST Endpunkte-as anstelle der Authorization Request-Header authentifizieren, solange Ihre Anfragen verwenden Sie nicht die Authorization Request-Header oder ein Content-Type gesetzt.

Das Problem mit diesem Header ist, sie werden Browser auslösen Preflight OPTIONS Anfrage zu tun:

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

Und das Problem mit Telefonieren zu diesen API-Endpunkten, die ein Preflight ist, sie don auslösen Ich reagiere anscheinend nicht auf OPTIONS Anfragen auf eine Weise, die dazu führt, dass Browser den Preflight als Erfolg sehen.

Bei https://docs.microsofttranslator.com/text-translate.html#!/default/post_TranslateArray es die docs bemerken sagen, dass Endpunkt ein POST mit einem application/xml oder text/xml erwartet Content-Type, so dass, wenn Endpunkt Preflight nicht OPTIONS in der richtigen Art und Weise reagiert, dass man nicht.

Das ist, weil das Hinzufügen eines Content-Type: application/xml oder Content-Type: text/xml Header auf eine Anfrage wird definitiv Browser auslösen Preflight OPTIONS vor dem POST zu tun.

+0

Richtig! Ich benutzte den Header 'Authorization'. Der Doc sollte alles erwähnen, was Sie gerade gesagt haben – seza443

+0

Prost-froh, dass die Info hier geholfen hat. Was die Dokumente anbelangt, konnte ich, als ich dort hinschaute, keinerlei Informationen über den CORS-Support finden oder wie diese Endpunkte vom Frontend-JavaScript aufgerufen werden, das in einem Browser läuft. Also, ich denke, diese Doktoren sollten viel mehr erwähnen als jetzt ... – sideshowbarker

Verwandte Themen