我试图使用他们的Javascript API从Sprout Video获得API响应。问题在于我在请求中遇到CORS问题。我可以在Postman中得到回复,但不能在我的网站上。Ajax API调用导致CORS问题
我发现了一堆关于这个问题的问题,但到目前为止还没有找到适合我的方案的工作解决方案。我认为添加标头'Access-Control-Allow-Origin':'*'
本应该解决它,但它不。我也尝试将dataType更改为jsonp
,这导致了不同的错误,但仍然是错误。
任何人都可以告诉我哪里出错了吗?
$.ajax({
type : 'GET',
url : 'https://api.sproutvideo.com/v1/videos/' + videoID,
headers: {
'SproutVideo-Api-Key':'ae463680265ac2ff7bf6255b3488d0c1',
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Credentials': true,
},
dataType: 'json',
crossDomain: true,
success:function(result) {
console.log(result);
},
error:function(result) {
console.log(result);
}
});
'Access-Control-Allow-Origin'头部需要位于响应头部,而不是请求头部。我不太了解CORS解决您的问题,但将该标题添加到请求中并不能解决您的问题。 –
据我查看http://sproutvideo.com/docs/api.html上的文档,不支持直接从前端JavaScript代码使用SproutVideo API--特别是试图调用它从jQuery $ .ajax或XHR或Fetch API。在任何情况下从JavaScript代码中调用它的文档中都没有提及。但无论如何,文档中的假设似乎是你从后端代码调用它 - 例如,从后端PHP或Ruby代码 – sideshowbarker
对不起,是的,好像问题是必需的访问控制 - 允许 - 原始响应头不包括在API的* any *响应中,更具体地说,API没有被配置为正确响应CORS预检OPTIONS请求,浏览器自动作为CORS协议的一部分发送。有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests – sideshowbarker