Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查其他服务器上的文件_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 检查其他服务器上的文件

Javascript 检查其他服务器上的文件,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我希望我的用户下载我的脚本生成的文件,并将其放在他们的服务器上(此部分已成功构建)。目标是验证用户是否有能力将文件上传到他们声称拥有的网站。我会检查网站的根,所以一个例子将是 然后,我希望我的脚本检查文件是否存在于他们的服务器上。我想,我可以使用一些javascript来检查用户域和文件路径是否会返回与404不同的HTTPresponse 所以我在网上四处看看,试了一些东西。下面是结果函数: /* DUMMY */ url = 'http://www.google.com/';

我希望我的用户下载我的脚本生成的文件,并将其放在他们的服务器上(此部分已成功构建)。目标是验证用户是否有能力将文件上传到他们声称拥有的网站。我会检查网站的根,所以一个例子将是

然后,我希望我的脚本检查文件是否存在于他们的服务器上。我想,我可以使用一些javascript来检查用户域和文件路径是否会返回与404不同的HTTPresponse

所以我在网上四处看看,试了一些东西。下面是结果函数:

    /* 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。