PHP服务器只接受一些图像,跨域

时间:2013-12-14 05:41:05

标签: javascript php jquery ajax cross-domain

修改
感谢您的帮助,我决定将前端移动到后端服务器,并将旧的前端服务器用于其他部分。再次谢谢你。如果有人能回答这个问题,我仍然会给出最好的答案和一些赞成。这真的令人难以置信。这是一张猫的照片,谢谢。

http://www.placekitten.com/75/75

我将我的javascript中的图像数据通过ajax发送到我的其他服务器上的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;
?>

是否有任何理由导致图片说不允许跨域?我特意给了它许可,它适用于其他图像。只是不是我尝试过的一些。这可能是图像的大小吗?

修改

以下是我的网络标签中有关失败请求的说明。

请求网址:*接收服务器*

请求标题
接受:* / *
内容类型:应用/ X WWW的窗体-urlencoded;字符集= UTF-8
来源:*发送服务器*
的Referer:*发送服务器*
用户代理:Mozilla / 5.0(X11; CrOS i686 4319.96.0)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 29.0.1547.74 Safari / 537.36

表格数据
urlordata:假
房间:数学
数据:data:image / png; base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAPACAIAAAAqgF + sAA ......(很长)

1 个答案:

答案 0 :(得分:1)

将这三个服务器变量转储到图像接收服务器'REMOTE_ADDR','REMOTE_HOST','REMOTE_PORT'上的成功和不成功请求的文件中,然后进行比较。