2011-12-02 75 views
3

我有一个链接重定向到Intranet方向:如何知道url是否可用?

<a href="http://10.2.68/name/">Go</a> 

内网​​只能访问用户,否则他们得到一个404错误。我想知道在重定向之前url是否有效,这样,用户离开intranet不会得到404错误,但会显示一条消息,说明您没有访问权限。我怎样才能做到这一点与jQuery或JavaScript ?.

编辑: 嗯,非常感谢你,但不幸的是,任何方法不适合我。抱歉,我没有提及该网站和Intranet网址处于不同的域名。 最后,我必须在代码隐藏中验证用户IP,并且写入或不写入Intranet URL。

回答

0

也许使用htaccess文件来检测内部网络呢?

+0

你能详细说一下吗? –

3

你可以做一个Ajax请求第一,是这样的:

$.ajax({ 
    url: "http://10.2.68/name/", 
    context: document.body, 
    success: function(){ 
     window.location = "http://10.2.68/name/"; 
    } 
}); 

这可以通过绑定到链接上单击事件中运行。

不确定它是否会因交叉原点而起作用,但可能是一个很好的起点。

+0

这项工作?我想,链接将被点击重定向,而'ajax'同步调用 –

+0

返回false;将阻止那个,添加在绑定代码中。 –

0

最好的答案是禁用链接,如果它是不活动的,在用户尝试点击它之前(为什么让它们尝试?)。

jQuery(function($) { // make sure dom is ready 

    $.ajax({ 
     url: url, 
     //dataType: 'JSONP', //might need this? 
     complete: function(xhr) { // use complete so it fires on error OR success 
      if(xhr.status == 200 || xhr.status == 304) { 
       $('#link').addClass('valid'); 
      } 
      else { 
       $('#link').addClass('invalid').click(function() { return false; }); 
      } 
     } 
    }); 

}); 

但是,如果你不希望调用,因为那里将是成千上万的用户在看每分钟页面...你

jQuery(function($) { // make sure dom is ready 

    $('#link').click(function() { 
     $.ajax({ 
      url: url, 
      //dataType: 'JSONP', //might need this? 
      success: function() { 
       window.location = url; 
      }, 
      error: function() { 
       // does this work with JSONP? be sure to check! 
       window.alert('could not connect'); 
      } 
     } 
    }); 

}); 
0

假设你的锚固装置具有ID:

<a id="lnkGo" href="http://10.2.68/name/">Go</a> 

而jQuery代码可能是这样的:

$("#lnkGo").bind("click", function() { 
    var $that = $(this); 
    $.ajax({ 
     url: $that.attr("href"), 
     statusCode: { 
     200: function() { 
      window.location = $that.attr("href") 
     }, 
     404: function() { 
      alert("Sorry, page is unavailable..."); 
     } 
     } 
    }); 
    return false; 
}); 

此外,请记住,这不适用于跨域问题。该网址必须与当前域相同。