这是一个与https://social.msdn.microsoft.com/Forums/en-US/6e856136-9a39-4b98-a53d-7f8bce08e3a6/cors-support-for-bing-translate-api相关的问题对Microsoft Azure Translate API的CORS支持?
Microsoft Azure Translate API现在是否支持CORS?
这是一个与https://social.msdn.microsoft.com/Forums/en-US/6e856136-9a39-4b98-a53d-7f8bce08e3a6/cors-support-for-bing-translate-api相关的问题对Microsoft Azure Translate API的CORS支持?
Microsoft Azure Translate API现在是否支持CORS?
的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
Parameter name: appId</p><code></code><p>message id=0642.V2_Rest.Translate.4E779D02</p></body></html>
我个人并不具有有效appid
测试与 - 但如果这样做,我想你会发现它会工作:
GET
端点从https://docs.microsofttranslator.com/text-translate.html文档appid
参数,而不是Authorization
请求头。如果可以也为https://docs.microsofttranslator.com/text-translate.htmlPOST
端点,作为工作,只要你的请求不使用Authorization
请求头或设置Content-Type
。
与头的问题是,他们会触发浏览器做了预检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/xml
Content-Type
一个POST
,所以如果端点不响应以正确的方式以预检OPTIONS
,一个将无法正常工作。
这是因为添加Content-Type: application/xml
或Content-Type: text/xml
头的要求肯定会触发浏览器POST
前做预检OPTIONS
。
正确!我正在使用标题'Authorization'。该文档应该提到你刚才所说的一切 – seza443
干杯 - 很高兴这里的信息有所帮助。就文档而言,当我在那里查找时,根本找不到关于CORS支持的任何信息,或者如何从浏览器中运行的前端JavaScript中调用那些端点。所以,我认为这些文档应该比现在提到的要多得多...... – sideshowbarker