编辑
感谢大家的帮助,我决定将前端移到后端服务器,其他部分使用旧的前端服务器。再次谢谢你。如果有人能回答这个问题,我仍然会奖励最佳答案和一些赞成票。这真是令人难以置信。作为我的感谢,这是一张猫的照片。
(来源:placekitten.com)
我正在通过 ajax 将图像数据从我的 javascript 发送到我的其他服务器上的 php,以解析数据、保存数据并返回图像链接。 (是的,它必须是两个服务器)我可以发送一些图像,但我的一半测试图像返回错误。
XMLHttpRequest cannot load *php-file-on-recieving-server*. Origin *sending-server* is not allowed by Access-Control-Allow-Origin.
这是javascript
$.ajax({
url: '*php-file-on-recieving-server*',
type: 'POST',
data: {
urlordata: false,
room: 'Math',
data: e.target.result
},
success: function(data) {
$('.t'+thumbNumberCounter).attr('src', data);
},
error: function(xhr, status, error) {
$('.t'+thumbNumberCounter).attr('src', '*error-image*');
}
});
这是PHP
<?php
error_reporting(E_ERROR | E_PARSE);
header('Access-Control-Allow-Origin: *sending-server*');
$room = $_POST['room'];
$filename = $room.uniqid('_');
$data = $_POST['data'];
$uri = substr($data, strpos($data,",")+1);
$encodedUri = str_replace(' ','+',$uri);
file_put_contents('*folder-where-images-are-stored*'.$filename, base64_decode($encodedUri));
echo '*folder-where-images-are-stored*'.$filename;
?>
图像是否有任何原因会导致它说不允许跨域?我特意授予了它许可,它可以与其他图像一起使用。只是不是我尝试过的一些。会不会是图片的大小?
编辑
这是我的网络选项卡关于失败请求的内容。
请求网址:*接收服务器*
请求 header
接受:*/*
内容类型:application/x-www-form-urlencoded;字符集=UTF-8
来源:*发送服务器*
Referer:*发送服务器*
用户代理:Mozilla/5.0 (X11; CrOS i686 4319.96.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.74 Safari/537.36
表格数据
urlordata:false
房间:数学
data:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAPACAIAAAaqgF+sAA……(很长)
最佳答案
将这三个服务器变量转储到图像接受服务器 'REMOTE_ADDR'、'REMOTE_HOST'、'REMOTE_PORT' 上成功和不成功请求的文件中,并比较它们。
关于javascript - PHP服务器只接受部分图片,跨域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20580091/