如何知道网址是否可用?

时间:2011-12-02 15:57:19

标签: javascript jquery url validation

我有一个重定向到内部网方向的链接:

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

只有Intranet中的用户才能访问,否则会出现404错误。我想在重定向之前知道url是否有效,这样用户离开内部网就不会得到404错误,而是一条消息“你没有访问权限”。我怎么能用jquery或javascript做到这一点?。

修改 好的,非常感谢,但不幸的是,任何方法对我都不起作用。对不起,我没有提到该网站和内网网址在不同的域名。 最后,我必须在代码隐藏中验证用户IP并写入或不写入Intranet URL。

5 个答案:

答案 0 :(得分:3)

你可以先做一个ajax请求,例如:

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

可以通过绑定链接上的click事件来运行。

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

答案 1 :(得分:1)

您可以使用此jQuery插件向远程文件发出头部请求,如果它返回的内容很好(并且您可以显示它),否则不显示它

插件: http://binarykitten.me.uk/dev/jq-plugins/88-jquery-plugin-ajax-head-request.html

答案 2 :(得分:0)

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

答案 3 :(得分: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');
           }
        }
    });

});

答案 4 :(得分: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;
});

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