Microsoft Academic Search API停止工作

问题描述 投票:1回答:1

我已经成功使用了Microsoft Academic Search API,但是由于某种原因,我未更改的代码大约在2周前停止工作,不知道为什么。我将其归结为一些CORS问题:飞行前OPTIONS请求导致404,并使用POST直接执行mode: 'no-cors'阻止了自定义API密钥标头(Ocp-Apim-Subscription-Key)的发送,结果为401。一切都还正常的时候,我从未在Networks开发选项卡中查看过,也许OPTIONS请求在两周后仍然有效吗?还是我这边的Firefox更新?

我尝试了GET和POST请求,我尝试了axios和fetch API,也尝试了无标准要求和标准要求。除了手动将API密钥添加到标头之外,什么都没有。

// simple no-cors request
fetch(
    'https://api.labs.cognitive.microsoft.com/academic/v1.0/evaluate',
    {
        method: 'POST',
        mode: 'no-cors', // I've tried removing this line for CORS request
        headers: new Headers(
           { "Content-Type": "application/x-www-form-urlencoded", "Ocp-Apim-Subscription-Key":"[actual key not needed for replication]" }
        ),
        body: "expr=Id%3D2101196984&attributes=Id"
    }
).then( response => { console.log(response);} )
.catch(err => console.log(err))

查看Ocp-Apim-Subscription-Key标头如何丢失。经过一些研究,我意识到这是由于no-cors模式(see here)引起的。简单的POST标头:

Host: api.labs.cognitive.microsoft.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Origin: null
Content-Length: 34
DNT: 1
Connection: keep-alive

此请求导致401,权限被拒绝。注意我在示例中使用了一个虚拟密钥,但是我的真实密钥也遇到了同样的问题,这一定是由于省略了Ocp-Apim-Subscription-Key,因为当我在手动添加密钥后重新发送请求时-header,响应就很好了]](使用Firefox的“开发人员工具栏网络中的“编辑并重新发送”功能=>“标题”标签,并手动添加了一行Ocp-Apim-Subscription-Key: [actual key])。

但是,当我使用CORS请求时,服务器无法真正处理以下OPTIONS预检请求,返回404。

在没有mode: 'no-cors'的情况下发送与上述相同的提取请求时发生的Request OPTIONS标头>

Host: api.labs.cognitive.microsoft.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: POST
Access-Control-Request-Headers: ocp-apim-subscription-key
Origin: null
DNT: 1
Connection: keep-alive

响应标题:

HTTP/1.1 404 Resource Not Found
Content-Length: 89
Content-Type: application/json
Date: Mon, 28 Oct 2019 10:59:03 GMT

还有其他人遇到这个问题吗?我能做些什么,或者这似乎是微软方面的服务器问题?

我已经成功使用了Microsoft Academic Search API,但由于某种原因,大约两周前我未更改的代码停止工作,不知道为什么。我将其归结为一些CORS问题:飞行前...

cors axios fetch-api
1个回答
0
投票

我很高兴地说,CORS问题应该最终得到解决。问题本身是内部迁移期间配置错误的结果。

为延迟解决而致歉!

© www.soinside.com 2019 - 2024. All rights reserved.