2011-11-16 71 views
0

我们试图确定是否可以尝试通过jQuery从另一个域(但受信任)获取文件/数据并确定项是否成功获取。 换句话说,通过这种方法,我们想测试用户是否已经在浏览器中将此站点设置为可信站点。 我们通过img.src=[image on the 'another domain']进行了测试,但它总是成功。即 它没有请求认证信任是否到位。所以我们现在正在寻找另一种解决方案/建议..用于测试URL是否可访问的JQuery

感谢

+0

复制 - > http://stackoverflow.com/questions/1051272/how-to-test-a- url-in-jquery – ManseUK

+0

这不是一个重复的!赞美你的编辑! - 所涉及的atricle只处理访问该页面。如果用户响应身份验证对话框,$ get请求将会获得成功,否则失败 - 我们正在寻找一种解决方案,即不会提示用户输入凭据,以便我们可以静静地测试成功或未能确定该网站是否可信。 – user641399

+0

不是 - 另一个问题的答案链接了一个插件,它将读取请求中的标题 - 如果用户可以访问该站点,您将获得200个插件 - 即它们经过身份验证。如果他们不是......那么你会收到401(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html),那正是你想要的吗?我已经添加了这个答案(我做了这个16日但删除它并链接到其他问题) – ManseUK

回答

1

您可以使用下面的插件 - http://binarykitten.me.uk/dev/jq-plugins/88-jquery-plugin-ajax-head-request.html

函数调用传递的网址,传递数据,然后处理 的标题完成。

如果用户可以访问该站点 - 即他们经过身份验证,您将获得200的状态代码。如果他们不

HTTP状态代码,您将收到的401状态码:http://w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

可能,但这肯定不会在IE中起作用,并且我们仅限于此平台.comp策略。 – user641399

+0

作为更新 - 它将捕获状态码404,但始终返回状态为零 - 如果执行跨域请求。 erorr是'无运输' - 即具有信任的用户将得到与没有信任的用户相同的错误代码。 – user641399

+0

注意:我们可以设置jQuery.support.cors = true;这将启用xdomain调用,现在我们可以通过可信列表中的站点测试sucessfull调用,并且如果url不在受限列表中,则可以尝试一个不完整的调用。然而,通过这样做,现在用户在所有情况下都会被提示“此页正在访问不受其控制的信息。这带来了安全风险。你想继续吗?“如果我们用这个单独的解决方案,这将会像用户一样烦人。 – user641399

0
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <title>Show Content</title> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       // this script resides on aaaa.yyyyy.domain.com 
       document.domain='yyyy.domain.com'; 
       // call to trusted site 
       var urlx="http://bbbb.yyyy.domain.com"; 

       // turn on x dom calls 
       jQuery.support.cors = true; 

       // Launch AJAX request. 
       $.ajax(
        { 
         url: urlx, 

         // The type of request. 
         type: "head", 

         // The type of data that is getting returned. 
         dataType: "html", 

         error:function 
         (xhr, ajaxOptions, thrownError){ 
          ShowStatus("Call to URL: '"+urlx+ "' Failed "+xhr.status+" "+thrownError); 
         }, 
         success: function(strData){ 
          ShowStatus("Call to URL: '"+urlx+ "' Success"); 
         } 
        } 
       ); 
      }); 

      function ShowStatus(strStatus){ 
       var jStatusList = $("#ajax-status"); 
       jStatusList.prepend("<p>" + strStatus + "</p>"); 
      } 
     </script> 
    </head> 
    <body> 
     <div id="ajax-status" ></div> 
    </body> 
</html> 
相关问题