简体   繁体   English

如何在JS中捕获403禁止错误?

[英]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,就像trycatch(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM