使用javascript的URL验证/连接
URL validation/connectivity using javascript
我想验证外部url是否有效/存在/响应使用javascript。例如,"www.google.com"应该返回true,而"www.google123.com"应该返回false。
我想通过测试使用AJAX来达到这个目的:readyState == 4 &&xmlhttp。状态== 200),但似乎这对远程服务器(外部url)不起作用。由于我的服务器使用代理,我计划使用浏览器端脚本,以便它自动使用用户的浏览器代理(如果存在)。请告诉我,我是否必须使用"AJAX跨域"?如何实现这一点,因为我只是想验证一个url。除了使用AJAX还有其他方法吗?
我很确定这是不可能的。任何允许您在用户上下文中调用另一个域上的随机页面的AJAX都会打开各种安全漏洞。
您必须使用服务器端解决方案。
避免跨域问题的通常方法是注入标记。像图像或脚本这样的标签可以从任何域加载其内容。您可以注入一个类型为"text/x-unknown"之类的脚本标记,然后监听标记的load-event。当加载事件触发时,您可以再次从页面中删除脚本标记。
当然,如果您正在查找的文件恰好是图像,那么您可以使用new Image()
。这样,您就不必通过注入标记来污染页面,因为图像是在创建时加载的(这可以用于预加载图像)。同样,只需等待图像上的加载事件。
好吧,看来我在这里过早下结论了。浏览器之间在如何支持这个方面存在一些差异。下面是一个完整的例子,说明如何在IE9和最新版本的Firefox、Chrome和Safari中使用script标签来验证url。
它不工作在旧版本的IE(至少IE8),因为显然他们不提供加载/错误事件的脚本标签。
如果script-tag的内容类型不为空或设置为'text/javascript', Firefox将拒绝加载任何内容。这意味着使用这种方法检查脚本文件可能有些危险。在我的测试中,似乎在执行任何代码之前删除了脚本标签,但我不确定…
无论如何,下面是代码:
<!doctype html>
<html>
<head>
<script>
function checkResource(url, callback) {
var tag = document.createElement('script');
tag.src = url;
//tag.type = 'application/x-unknown';
tag.async = true;
tag.onload = function (e) {
document.getElementsByTagName('head')[0].removeChild(tag);
callback(url, true);
}
tag.onerror = function (e) {
document.getElementsByTagName('head')[0].removeChild(tag);
callback(url, false);
}
document.getElementsByTagName('head')[0].appendChild(tag);
}
</script>
</head>
<body>
<h1>Testing something</h1>
<p>Here is some text. Something. Something else.</p>
<script>
checkResource("http://google.com", function (url, state) { alert(url + ' - ' + state) });
checkResource("http://www.google.com/this-does-not-exists", function (url, state) { alert(url + ' - ' + state) });
checkResource("www.asdaweltiukljlkjlkjlkjlwew.com/does-not-exists", function (url, state) { alert(url + ' - ' + state) });
</script>
</body>
</html>
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- 为 WebSocket 连接配置身份验证标头
- Stripe Connect Charge-必须作为连接帐户进行身份验证才能使用客户参数
- 无法连接到网络服务器.验证 Web 服务器是否正在运行,并且传入的 http 请求未被防火墙阻止
- 需要使用具有连接和端点的 JSProvb 验证页面
- 如何验证JS和PHP之间的连接
- 如何使用Ajax连接数据库(jsp)检查输入验证
- Facebook连接,验证一个网站., amp;和,
- 使用javascript的URL验证/连接
- JavaScript EventSource不能在Apache基本验证后打开连接
- 在从 IIS 托管站点连接的 NodeJS 上对用户进行身份验证
- 控制器连接到指令进行验证
- 要验证并连接,请在表格中输入电话号码