2011-12-02 73 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; 
}); 

此外,請記住,這不適用於跨域問題。該網址必須與當前域相同。