脚本标签黑客+如何在第二级AJAX之后进行通信

时间:2011-02-12 13:26:42

标签: javascript cross-domain disqus

我想提供一个可嵌入的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 :(得分:0)

如果你需要做的只是一个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);
   });

“回调=?” property告诉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)。

答案 1 :(得分:0)

我用这个跨域iframe黑客在两个不同的域之间进行通信。我建议阅读这个

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