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
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.
Richtig! Ich benutzte den Header 'Authorization'. Der Doc sollte alles erwähnen, was Sie gerade gesagt haben – seza443
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