CORS 支持 Microsoft Azure 翻译 API?
CORS support for Microsoft Azure Translate API?
相关的问题
Microsoft Azure Translate API 现在支持 CORS 了吗?
Microsoft Translator Text API 现在似乎至少最低限度地支持 CORS,因为它至少似乎在响应中发送了 Access-Control-Allow-Origin
header:
$ 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
来测试——但如果你有,我想你会发现它会起作用:
- 如果您使用 https://docs.microsofttranslator.com/text-translate.html 文档中的
GET
个端点
- 如果您使用
appid
参数而不是 Authorization
请求进行身份验证 header
If 可能 也适用于 https://docs.microsofttranslator.com/text-translate.html POST
端点——只要您的请求不使用 Authorization
请求 header 或者设置一个 Content-Type
.
那些 header 的问题是,它们会触发浏览器进行预检 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 我注意到文档说端点需要 POST
和 application/xml
或 text/xml
Content-Type
,所以如果那个端点不没有以正确的方式响应预检 OPTIONS
,那是行不通的。
那是因为在请求中添加Content-Type: application/xml
或Content-Type: text/xml
header肯定会触发浏览器在POST
之前进行预检OPTIONS
。
Microsoft Azure Translate API 现在支持 CORS 了吗?
Microsoft Translator Text API 现在似乎至少最低限度地支持 CORS,因为它至少似乎在响应中发送了 Access-Control-Allow-Origin
header:
$ 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
来测试——但如果你有,我想你会发现它会起作用:
- 如果您使用 https://docs.microsofttranslator.com/text-translate.html 文档中的
GET
个端点 - 如果您使用
appid
参数而不是Authorization
请求进行身份验证 header
If 可能 也适用于 https://docs.microsofttranslator.com/text-translate.html POST
端点——只要您的请求不使用 Authorization
请求 header 或者设置一个 Content-Type
.
那些 header 的问题是,它们会触发浏览器进行预检 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 我注意到文档说端点需要 POST
和 application/xml
或 text/xml
Content-Type
,所以如果那个端点不没有以正确的方式响应预检 OPTIONS
,那是行不通的。
那是因为在请求中添加Content-Type: application/xml
或Content-Type: text/xml
header肯定会触发浏览器在POST
之前进行预检OPTIONS
。