我有一个重定向到内部网方向的链接:
<a href="http://10.2.68/name/">Go</a>
只有Intranet中的用户才能访问,否则会出现404错误。我想在重定向之前知道url是否有效,这样用户离开内部网就不会得到404错误,而是一条消息“你没有访问权限”。我怎么能用jquery或javascript做到这一点?。
修改 好的,非常感谢,但不幸的是,任何方法对我都不起作用。对不起,我没有提到该网站和内网网址在不同的域名。 最后,我必须在代码隐藏中验证用户IP并写入或不写入Intranet URL。
答案 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;
});
此外,请注意,这不适用于跨域问题。网址必须与当前网址相同。