0

我通过 xampp 设置了 Apache 来测试网页以加载一些 .php 文件以读取 .csv 文件作为数据源以输出条形图。我在 Chrome 上遇到了这个错误。

不安全的 JavaScript 尝试从带有 URL file:///C:/xampp/htdocs/search/stackedBarChart.html 的框架访问带有 URL file:///C:/xampp/htdocs/search/php/loader/csvFileUploader.php 的框架. 域、协议和端口必须匹配。upclick-min.js:99 i.onload_callback.i.onload_callback upclick-min.js:99 onload

我认为这不像许多其他帖子所建议的那样是 iframe 问题。我也通过firefox对此进行了测试,它超出了读取php的范围,但没有从本地目录加载.csv文件。

有什么建议么?

<script>
        var uploaderCSV = document.getElementById('uploaderCSV');
            upclick({
                element : uploaderCSV,
                action : 'php/loader/csvFileUploader.php',
                onstart : function(filename) {
                    console.log(" -- Start upload: <" + filename + "> Here");

                },
                oncomplete : function(response_data) {
                    alert(response_data);
                    console.log("  -- CSV file to load: ", response_data);
                    var n = response_data.split("|");

                    if (n.length > 1) {
                        console.log("  >> csv file loaded at[ ", n[1], " ]");
                        loadDayLightFactor("php/loadCSV.php", "../" + n[1]);
                    }
                }
        });


</script>

这是php文件

<?php
// using upload at click from http://code.google.com/p/upload-at-click/
// FileData is the name for the input file

$file_result = "";
$file = $_FILES['Filedata'];

$allowedExtensions = array("csv", "txt");
$extension = end(explode(".", $file["name"]));

echo "123".$file;

?>

4

1 回答 1

0

您的问题似乎是您尝试访问的 URL:

file:///C:/xampp/htdocs/search

这不是在本地环境中开发的方式。尝试通过

http://localhost/search

我相信它会工作得更好。下面详细解释..


之所以会发生这种情况,是因为有一个名为Cross-Domain-Policy的安全标准

您不能(通过 JavaScript)调用与当前 URL 地址不同的 URL 文件。

例如:我网站的 URL 是foobar.com,我正在尝试向barbaz.com发送 AJAX 请求。

我不能!

因为它不是我的域。我可以尝试向barbaz.foobar.com发送请求(使用一些 JavaScript 代码)。

另一个场景将向您展示为什么这是“必须具备”的安全标准:

假设我使用 cookie 登录了我的银行网站。cookie 是持久的。

我正在输入一个向所有已知银行网站发送 AJAX 请求的随机网站X。如果我仍然登录我的银行网站,X网站可以使用我的用户与银行网站“对话”,并做一些我不知道的事情。

这是一个小例子,为什么这非常重要。

我希望这可以帮到你。

于 2012-08-02T21:29:32.123 回答