скрипт взлома + как мне общаться после второго уровня AJAX - PullRequest
0 голосов
/ 12 февраля 2011

Я хочу предоставить встраиваемый javascript, который будет получать скрипт с моего сервера. Который, в свою очередь, получит некоторые детали от пользователя (страницу, на которой есть мой встраиваемый js) и вернет ее на мой сервер. Как мне добиться этого?

Это встраиваемый js, который я предоставляю.

  <script>
        (function() {
            read="This is the data which is entered by the user"; 
            var istreet = document.createElement('script'); istreet.type = 'text/javascript'; istreet.async = true;
            istreet.src = 'http://xyz.com/a.php;
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(istreet);
        })();

    </script>

А это код на http://xyz.com/a.php

$('<div id="content"></div>').appendTo('body');
$('#content').html('
    Some html to inject to the page\'s dom . 
');
$.get("http://xyz.com/process.php?dataToProcess="+read,function(data){
alert(data);
});

Но я вижу, что $ .get ("http://xyz.com/process.php?dataToProcess="+read,function(data){ // приводит к междоменному запросу ajax

Я не хочу решать междоменную проблему ajax. Я хочу иметь возможность общаться между двумя сторонами (одна с встраиваемым скриптом и моим сервером) без проблем.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2011

Я использовал этот междоменный хакер iframe для связи между двумя разными доменами. Я рекомендую прочитать это

http://softwareas.com/cross-domain-communication-with-iframes

0 голосов
/ 13 февраля 2011

Если все, что вам нужно сделать, это запрос GET, вы можете использовать JSON-P (http://en.wikipedia.org/wiki/JSON#JSONP).

В вашем JavaScript синтаксис будет выглядеть примерно так:

$.getJSON("http://xyz.com/process.php?dataToProcess=" + encodeURIComponent(read) + "&callback=?",
   function(result){
     alert(result);
   });

"Обратный звонок =?" свойство сообщает JQuery, что это запрос JSON-P. JQuery заменит некоторую произвольную строку на «?» (подробнее здесь: http://api.jquery.com/jQuery.getJSON/).

Для правильной работы вам также необходимо изменить ваш обработчик process.php. Обработчик PHP должен сначала прочитать значение параметра запроса «обратный вызов», а затем обернуть ответ этим значением.

Например, если $ .getJSON () отправляет параметр "callback = abcd" на страницу php, страница php должна вернуть:

abcd({"data": "json object with the result"});

Несколько замечаний:

  • Обязательно экранируйте любые пользовательские данные, которые вы отправляете на сервер с помощью encodeURIComponent ();

  • Если process.php изменяет пользовательские данные, следует соблюдать осторожность при использовании запросов GET, поскольку это может привести к атакам XSRF (http://en.wikipedia.org/wiki/Cross-site_request_forgery).

...