我正在使用Facebook js SDK“Go Live Dialog”进行实时流式传输,每件事情都可以正常工作,直到最后一步我想要发布流而我无法发布因为有一个CORS错误,它是:
XMLHttpRequest无法加载https://graph2.facebook.com/v2.5/10154376393778843?access_token=EAAOAPyi8mX....&suppress_http_code=1。对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头包含多个值'*,https://www.facebook.com/',但只允许一个。因此,不允许原点“https://www.facebook.com/”访问。
问题是由于graph2.facebook.com两次发送CORS标题:
Access-Control-Allow-Origin:*
Access-Control-Allow-Origin:https://facebook.com/
并且Google Chrome只接受一个。
我打开它作为bug on facebook,但直到现在他们的答案是在我的浏览器上“禁用CORS安全性”,如果我想让我的应用程序公开给每个人一个糟糕的解决方案。
该应用的代码是:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '452751035113070',
xfbml : true,
version : 'v2.8'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<button id="liveButton">Create Live Stream To Facebook</button>
<script>
document.getElementById('liveButton').onclick = function() {
FB.ui({
display: 'popup',
method: 'live_broadcast',
phase: 'create',
}, function(response) {
if (!response.id) {
alert('dialog canceled');
return;
}
console.log('stream url:' + response.secure_stream_url);
FB.ui({
display: 'popup',
method: 'live_broadcast',
phase: 'publish',
broadcast_data: response,
}, function(response) {
console.log("video status: \n" + response.status);
});
});
};
</script>
也在这里:https://plnkr.co/edit/Aq0hkCTh5suXfOl6qKuN?p=preview。 要进行真正的尝试,您应该使用wowza或类似方法启动流式传输,否则,将禁用发布按钮,并在单击“发布”按钮时出现问题。
有人知道如何处理它以允许所有用户使用该脚本并强制他们使用其他浏览器或禁用安全选项吗?或者我需要等到facebook修复它?
答案 0 :(得分:0)
我停用了Chrome扩展程序并且可以正常使用。
扩展名为:JetBrains IDE Support 2.0.9
这很奇怪,因为每个帖子谈论你都不能有2个CORS指令,我认为服务器不断发送2个指令,或者服务器只发送1个,这个扩展名修改了标题......我不知道&#39不知道,但现在已经无效了。