使用jQuery检查另一个域上的URL是否为404?

时间:2010-01-22 18:56:19

标签: jquery cross-site

在客户端使用jQuery,我想知道我是否可以检查链接URL是否有效(即不返回404)。此链接指向另一个域,因此如果我只使用$ .get(),那么我最终会遇到权限问题。我记得读过一些关于使用JSONP请求的内容,但我不记得了。

4 个答案:

答案 0 :(得分:4)

我找到了一个似乎有用的解决方案(使用YQL):

$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
            "q=select%20*%20from%20html%20where%20url%3D%22"+
            encodeURIComponent(url)+
            "%22&format=xml'&callback=?",
    function(data){
      if(data.results[0]){
        // do whatever
      } 
    }
  );

假设您要检查的网址位于变量'url'。

答案 1 :(得分:1)

如果您调用的服务器可以返回JSONP格式的响应,则JSONP有效。这基本上意味着一个脚本在加载后调用页面上的回调函数。 见http://en.wikipedia.org/wiki/JSON#JSONP

在您的情况下,除非其他网站愿意合作或您在自己的网站上拥有代理脚本,否则它将无效。

如果您希望脚本与不受您控制的网站一起使用,最好的办法是使用代理或iframe黑客。

答案 2 :(得分:0)

您无法向其他域提出此类请求。这是浏览器中的安全功能。您可能必须尝试在iframe或其他内容中执行某些操作并进行检查。

答案 3 :(得分:0)

jsonp不会对你做多...

您应该使用自己喜欢的语言在服务器上轻松创建本地代理,只需加载传递给它的网址并返回响应代码即可。然后,使用jquery ajax加载具有您要测试的URL的代理页面。