我通过xampp设置了Apache来测试一个网页,以加载一些.php文件来读取.csv文件作为数据源,从而输出条形图。我在Chrome上遇到了这个错误。
不安全的JavaScript尝试访问具有URL的帧file:///C:/xampp/htdocs/search/php/loader/csvFileUploader.php来自具有URL的帧file:///C:/xampp/htdocs/search/stackedBarChart.html.域、协议和端口必须匹配。向上点击-min.js:99i.onliad_callback.i.onload_callback upclick-min.js:99加载
我不认为这是一个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;
?>
您的问题似乎是您试图访问的URL:
file:///C:/xampp/htdocs/search
这不是在当地环境下发展的方式。尝试通过访问
http://localhost/search
我相信它会更好用。详细说明如下。。
发生这种情况是因为一个名为跨域策略的安全标准
您不能(通过JavaScript)调用URL与当前URL地址不同的文件。
例如:我的网站的URL是foobar.com,我正在尝试向barbaz.com发送AJAX请求。
我不能
因为这不是我的领域。我可以尝试将请求发送到barbaz.foobar.com(使用一些JavaScript代码)。
另一个场景将向您展示为什么这是一个"必须具备"的安全标准:
假设我使用cookie登录了我银行的网站。cookie是持久的。
我正在进入一个随机的网站X,该网站向所有已知的银行网站发送AJAX请求。如果我仍然登录我的银行网站,X网站可以使用我的用户与银行网站"对话",并做我不知道的事情。
这是一个很小的例子,说明为什么这一点非常重要。
我希望这会有所帮助。