Загрузка изображения между доменами в jquery (хорошо работает на том же домене, не дает результатов на домене) - PullRequest
0 голосов
/ 01 мая 2011

У меня есть скрипт загрузки на основе jquery iframe, чтобы мои клиенты могли менять изображения на своем веб-сайте.Работа хорошая, но я хочу иметь междоменное решение, поэтому, когда я обновляю свой код, обновляются также все мои клиенты.

файлы действительно загружены, но я не могу прочитать содержимое iframe,даже он там, я вижу это, но не могу прочитать.

Я знаю, что это проблема безопасности, но это мой сервер, я просто разрешаю загружать файлы .jpg.

Как мне решить эту проблему, все мои домены находятся в одном и том же ip, размещенном на vps-сервере.

некоторый код

div_browser = '<iframe id="iframe_uploads" name="iframe_uploads" frameborder="0" align="center"';
    div_browser += '"></iframe>';
    modal_uploads(div_browser);
    function modal_uploads(data) {
        var modal = '<div id="modal">';
        modal += data;
        modal += '</div>';
        $("#gestor").append(modal);
        //
        var id = "#modal";
        var winH = $("#gestor").height();
        var winW = $("#gestor").width();
        $(id).css('top',  winH/2-$(id).height()/2);
        $(id).css('left', winW/2-$(id).width()/2);
        $(id).fadeIn(2000);
    }
$("#iframe_uploads").load(function() {
        var resposta = document.getElementById('iframe_uploads').contentWindow.document.body.innerHTML;
        var erro = resposta.split('|');
        var medidas = erro[1];
        if(erro[0] == "ok") {
            nome.val('pics/'+$('#ficheiro').val());
            var wh = medidas.split('=');
            $("#"+nome[0].id+"_width").val(wh[0]);
            $("#"+nome[0].id+"_height").val(wh[1]);
            $('#modal').animate({opacity: 1.0},1000).fadeOut('fast');
            $('#modal').remove();
        } else {
            $('#modal').html = resposta;
        }
    });

при этом у меня один iframeожидание результата процесса загрузки.Я могу видеть, что загрузка была успешной, поскольку там есть контент iframe, что-то вроде "ok | 44 = 55", но я не могу манипулировать этими данными ...

Спасибо, надеюсь, вы поможете мне

Ответы [ 3 ]

0 голосов
/ 05 мая 2011

Я полагаю, что это невозможно без полного управления сервером.

Мне удалось сделать это с помощью функций загрузки php ftp.

0 голосов
/ 21 мая 2011

На самом деле, вы можете сделать это с помощью следующего трюка:

Предположим, у вас есть форма на site.com, и вы загружаете обработчик на uploads.com, тогда вы делаете, как делаете, но загружаете обработчик после выполненияего работа вместо отправки перенаправлений ответа, например:

http://site.com/redirect/?status=OK&width=44&height=55

или

http://site.com/redirect/?status=Some+error+message

и http://site.com/redirect/ просто отправляет вампустая страница.

Затем в обработчике загрузки вы анализируете iframes document.location.href и получаете ответ.В некоторых браузерах событие load запускается дважды (ответ перенаправления + окончательный пустой ответ), вы просто должны игнорировать ошибки, в которых отказано в разрешении.

0 голосов
/ 01 мая 2011

Проблема в том, что даже если ваши серверы имеют одинаковый ip, это междоменная проблема для клиента (поскольку у них разные домены).

Однако, поскольку у вас есть сервер, естьнекоторые обходные пути, которые вы можете сделать:

1) Использовать только один домен (самый очевидный, но наиболее вероятный, что вы не можете)

2) Использовать прокси-код на вашем сервере (для связиодин домен с другим, поэтому клиент видит только 1 домен)

Чтобы помочь вам лучше, я хотел бы знать: 1) Какую технологию вы используете на своем сервере?(php, java, asp.net и т. д.) 2) Не могли бы вы опубликовать код формы (в основном action / urls)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...