CORS对Microsoft Azure Translate API的支持?

时间:2017-08-30 07:46:15

标签: cors microsoft-translator

这是与https://social.msdn.microsoft.com/Forums/en-US/6e856136-9a39-4b98-a53d-7f8bce08e3a6/cors-support-for-bing-translate-api

相关的问题

Microsoft Azure Translate API现在是否支持CORS?

1 个答案:

答案 0 :(得分:1)

Microsoft Translator Text API似乎至少在最低限度上支持CORS,因为它至少似乎在响应中发送了Access-Control-Allow-Origin标题:

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

我本人没有有效的appid来测试 - 但如果你这样做,我想你会觉得它会起作用:

如果可能也适用于https://docs.microsofttranslator.com/text-translate.html POST个端点 - 只要您的请求不使用Authorization请求标头或设置{{ 1}}。

这些标题的问题是,它们会触发浏览器执行预检Content-Type请求:

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

调用那些触发预检的API端点的问题是,它们似乎没有以某种方式响应OPTIONS请求,导致浏览器看到预检成功。< / p>

https://docs.microsofttranslator.com/text-translate.html#!/default/post_TranslateArray我注意到文档说端点需要OPTIONS POSTapplication/xml text/xml,所以如果该端点没有响应以正确的方式预检Content-Type,那将无法正常工作。

这是因为在请求中添加OPTIONSContent-Type: application/xml标头肯定会触发浏览器在Content-Type: text/xml之前执行预检OPTIONS