[英]How to catch a 403 forbidden error in JS?
I am trying to hack a little this facebook javascript code to make a call on an other js if the GET failed. 如果GET失败,我试图破解一下这个facebook javascript代码来调用其他js。
I have something like this : 我有这样的事情:
<div id="fb-root"></div>
<script>(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/yi_YI/all.js#xfbml=1&appId=###";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="###" data-num-posts="10" data-width="646"></div>
Which give a 403 Forbidden ( /* Not a valid locale. */
). 这给了403 Forbidden(
/* Not a valid locale. */
)。 When it does something like this, I want to be able to load the en_US facebook sdk. 当它做这样的事情时,我希望能够加载en_US facebook sdk。 So, I have tried :
所以,我试过了:
<div id="fb-root"></div>
<script>(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/yi_YI/all.js#xfbml=1&appId=###";
try { fjs.parentNode.insertBefore(js, fjs); }
catch(err) {
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=###";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="###" data-num-posts="10" data-width="646"></div>
But, it doesn't work, keep getting 403 Forbidden, like if the try
and catch(err)
is not working. 但是,它不起作用,继续获得403 Forbidden,就像
try
和catch(err)
不起作用一样。
You can't get the HTTP response status of a cross-domain request. 您无法获得跨域请求的HTTP响应状态。
The reason you're getting a 403 is because Facebook doesn't support yi_YI
as a locale – you will always get a 403. The locale you request must be on the list of supported locales . 你获得403的原因是因为Facebook不支持
yi_YI
作为语言环境 - 你总是得到403.你请求的语言环境必须在支持的语言环境列表中 。
use onerror method for script: 使用脚本的onerror方法:
<div id="fb-root"></div>
<script>(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/yi_YI/all.js#xfbml=1&appId=###";
//handle loading error
js.onerror = function(){alert("script loading error")};
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="###" data-num-posts="10" data-width="646"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.