Javascript 检查其他服务器上的文件
我希望我的用户下载我的脚本生成的文件,并将其放在他们的服务器上(此部分已成功构建)。目标是验证用户是否有能力将文件上传到他们声称拥有的网站。我会检查网站的根,所以一个例子将是 然后,我希望我的脚本检查文件是否存在于他们的服务器上。我想,我可以使用一些javascript来检查用户域和文件路径是否会返回与404不同的HTTPresponse 所以我在网上四处看看,试了一些东西。下面是结果函数:Javascript 检查其他服务器上的文件,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我希望我的用户下载我的脚本生成的文件,并将其放在他们的服务器上(此部分已成功构建)。目标是验证用户是否有能力将文件上传到他们声称拥有的网站。我会检查网站的根,所以一个例子将是 然后,我希望我的脚本检查文件是否存在于他们的服务器上。我想,我可以使用一些javascript来检查用户域和文件路径是否会返回与404不同的HTTPresponse 所以我在网上四处看看,试了一些东西。下面是结果函数: /* DUMMY */ url = 'http://www.google.com/';
/* DUMMY */
url = 'http://www.google.com/';
xhr = new XMLHttpRequest();
xhr.open("HEAD", url,true);
xhr.onreadystatechange=function() {
alert("HTTP Status Code:"+xhr.status)
}
xhr.send(null);
我使用的url应该存在。这将导致一个200(或与之类似的东西)。但是,对于大多数URL,我将得到一个错误0和以下错误:请求的资源上不存在“Access Control Allow Origin”头。因此,不允许访问源“”
有人能帮我完成脚本吗?您需要在目标服务器(例如文件所在的google.com)上启用跨源资源共享
为了防止漏洞,您不能仅在任何外部服务器上执行JavaScript。您只能在自己拥有的服务器上执行此操作,方法是在配置设置中显式添加代码以启用来自客户端服务器的请求。您需要在目标服务器(例如文件所在的google.com)上启用跨源资源共享
为了防止漏洞,您不能仅在任何外部服务器上执行JavaScript。您只能在自己拥有的服务器上执行此操作,方法是在配置设置中显式添加代码以启用来自客户端服务器的请求。我建议使用php来检查相同的设置。如果你对这个问题感到疑惑,你会得到关于CORS的阅读 这是一个简单的例子
$file = 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if ($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
从这里:我建议使用php来检查相同的问题。如果你对这个问题感到疑惑,你会得到关于CORS的阅读 这是一个简单的例子
$file = 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if ($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
从这里开始:我建议(因为它是最可移植的解决方案)在服务器上放置代理脚本。类似于
<?php
$url = filter_var($_GET['url'], FILTER_VALIDATE_URL);
if ($url) {
$ch = curl_init($url);
$res = curl_exec();
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo json_encode(Array('success' => 1, 'status' => $code));
}
else {
echo json_encode(Array('success' => 0, 'status' => 000000));
}
我建议(因为这是最可移植的解决方案)在服务器上放置代理脚本。类似于
<?php
$url = filter_var($_GET['url'], FILTER_VALIDATE_URL);
if ($url) {
$ch = curl_init($url);
$res = curl_exec();
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo json_encode(Array('success' => 1, 'status' => $code));
}
else {
echo json_encode(Array('success' => 0, 'status' => 000000));
}
如果未启用CORS,则无法使用ajax在第三方网站上打开URL。唯一的选择是创建php代理脚本,该脚本将读取文件并返回响应。谢谢您,在使用您的注释创建脚本的过程中,我自己在这里发布了另一个答案,尽管您的注释非常有用!如果未启用CORS,则无法使用ajax在第三方网站上打开URL。唯一的选择是创建php代理脚本,该脚本将读取文件并返回响应。谢谢您,在使用您的注释创建脚本的过程中,我自己在这里发布了另一个答案,尽管您的注释非常有用!在客户端,您只需要执行url='proxy.php?url='+encodeURIComponent('http://www.google.com“)
其中proxy.php包含上述代码。在客户端,您只需要执行url='proxy.php?url='+encodeURIComponent('http://www.google.com')
其中proxy.php包含上述代码。如果出现异常,我建议删除@
符号和catch。如果出现异常,我建议删除@
符号和catch。