【发布时间】:2020-08-28 11:02:47
【问题描述】:
我正在向属于 Timetastic 的另一个 Api 发送请求,这是一项管理您的工作假期的服务。这是我的反应应用程序中的一些相关代码:
const token = process.env.TIMETASTIC_TOKEN;
get timetasticAPI() {
return new Api(token);
}
getPublicHolidays(user) {
var Model = this.timetasticAPI;
return Model.get(`timetastic/publicholidays?countryCode=${user.countryCode}`).then(resp => {
return resp.json();
})
}
然后在另一个文件中调用此函数,并传入相关的用户对象。还有其他函数向一年前提出的 timetastic 请求,它们都可以工作,并且在 javascript 中没有区别,所以这个不是问题。
在 AWS Api-Gateway 上,我部署了一个名为 publicholidays 的资源,它采用一个名为 countryCode 的可选查询参数和一个授权标头,这可能是问题的一部分,因为错误是 aws 上的 401 Unauthorized。它是一个http api,将请求发送到https://app.timetastic.co.uk/api/publicholidays。还有其他 api 可以转到 https://app.timetastic.co.uk/api/some-endpoint,它们都可以工作,所以我不确定为什么这个不可以。
我的应用程序控制台中的错误是:
从来源“https://mycompany.mycompany.co.uk”访问“https://api.mycompany.co.uk/v1/timetastic/publicholidays?countryCode=GB-EAW”已被阻止通过 CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
过去,每当我部署的 api 无法正常工作时,无论出现什么问题,这始终是错误,所以我认为这不是实际错误。
当我使用不记名令牌从邮递员向https://app.timetastic.co.uk/api/publicholidays?countryCode=GB-EAW 发出请求时,它可以工作,我也没有在那里设置任何标题,我不知道为什么它在那里工作,但在我的应用程序上却不行。
在分析我的应用程序上的请求时,在不工作的 publicholidays 的请求标头下,我有:
授权:Bearer string-which-is-the-bearer-token
对于那些正在工作的,我有以下几点:
访问控制请求标头:授权 访问控制请求方法:GET
谁能告诉我可能出了什么问题或如何解决?谢谢
【问题讨论】:
-
从您收到的错误消息中,您需要将 CORS 标头添加到 AWS 控制台中的 API。 HTTP API 有一个非常简单的实现。 Postam 不关心 CORS 标头。
-
我刚刚启用了 Cors 谢谢,但它仍然不起作用。
-
我刚刚删除了 api 并重新编写了它,现在它可以工作了,谢谢