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

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

我找到了一个似乎有用的解决方案(使用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位于变量“url”中。

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

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

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

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

jsonp对你不会…

你应该做的是使用你最喜欢的语言在服务器上轻松创建一个本地代理,只需加载你传递给它的url并返回响应代码。 然后,使用jquery ajax加载具有您要测试的URL的代理页面。