需要将数据从一个网站异步发送到另一个网站
Need to send data from one website to another asynchronously
我的脚本跟踪客户端页面上的点击,并将其上传到我的服务器(我们称之为它)。http://fancyclickserver23.net)
现在我希望客户在他的网站上放一个脚本,这个脚本会标记页面上的点击并将数据发送到。http://fancyclickserver23.net在页面离开,甚至可能不时。
当然,由于跨浏览器的限制,我不能使用Ajax。那么我该怎么做呢?我将给出一个小的假设代码来帮助您理解。我有一个关闭跟踪器,当用户放入时加载
<script src="http://fancyclickserver23.net/loadtracker.php?client_id=2332"></script>
该代码加载闭包tracker=function(){…};用户需要创建跟踪器的对象
<script>
track=new tracker();
track.init();
</script>
track.init()基本上绑定了一个函数,该函数获取元素的Xpath并将其存储在track.clicks中。现在我需要一个函数track.send(),它会将clicks数组作为json发送(我知道如何将其转换为json),并在页面关闭时发送。
我该怎么做。我也看到一些网站使用类似的东西:
document.write("<sc"+"ript"+" src='https://fancyclickserver23.net/loadtracker.php?client_id=2332'"+"></scr"+"ipt>";
为什么要这样做而不是直接的脚本标记?如果我们必须使用document.write(),为什么不把它放在一个字符串中呢。
所以两个问题是:
- 如何在页面加载时异步(或以其他方式)发送数据
- 上面的代码是做什么的
- 我见过谷歌分析和脸书这样做,他们似乎没有任何问题。Facebook实际上会在屏幕上呈现对话框。如何
尽管存在跨域安全限制,但在一定程度上您仍然可以使用AJAX(XHR)。
浏览器不能像那样丢弃跨域请求。它必须先看看服务器对它的看法。它通过将实际请求发送到服务器并接收HTTP头中的指令和响应来实现这一点。如果Access-Control-Allow-Origin
标头未到达或与原始域不匹配,浏览器会破坏响应并在控制台中发出安全警告。
根据我的个人经验,无论是否为 I、 例如,将单向技术用于与您类似的事情——我在这里收集我的开源项目的单元测试结果的JSON报告。您可以在控制台中发现安全警告,但此时报告已安全存储在服务器上。Access-Control-Allow-Origin
标头,当站点aaa.com向站点bbb.com
使用:
function sendData( data ){
var scr = document.getElementById("scriptExchange");
if(typeof scr == "undefined"){
var scr=document.createEelement("script");
scr.id="scriptExchange";
document.body.appendChild(scr);
scr = document.getElementById("scriptExchange");
}
scr.src = "http://another-website.com/?query="+data;
}
只要你想发送数据,就调用这个函数。
现在在另一台服务器上,将响应设置为纯JS代码,例如
alert("Data Received");
并且从另一个服务器放入
如果您可以将点击数据数组转换为查询字符串,则可以执行以下操作:
var img = new Image(1,1);
img.src = "http://example.com/clicks-receiver?" + query_string;
您可以使用jQuery和jsonP来实现这一点。
1) 使Ajax调用如下:
var url = your_other_domain_url + "jsoncallback=?";
var params = {param1:val1, param2:val2};
$.ajax({
type: 'POST',
url: url,
data: params,
success: function(data){
//success jsonp handler - assume content in data.response
if(data.response){
//do something with the remote site content
}
},
dataType: "json"
});
2) 在服务器端,跟踪任何具有参数"jsoncallback"的请求,并将响应放入json返回对象(如)中
{status: 'success', response: "<html>.....resposne conent...</html>"}
难道不能使用iframe吗。父级可以看到iframe,iframe可以将脚本运行回另一台服务器,而无需跳过一堆关卡。我相信我们的omniture实现使用了这种方法。
上面提到的img方法也是一种潜在的方法。
关于它的一篇旧文章:
http://www.codecouch.com/2008/10/cross-site-scripting-xss-using-iframes/
或另一
http://blog.kotowicz.net/2010/11/xss-track-how-to-quietly-track-whole.html
传播这种东西是不是不好?
- 如何识别我的网站中的慢速设备
- 用Javascript更改我网站上的字体大小
- 有任何可能将facebook实时信使整合到一个网站中
- esri javascript异步打印
- 将电视直播频道从网站嵌入我的网站
- JavaScript异步问题
- Windows 8固定的网站互动程序
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 门户网站:当地时间有多有用
- 异步facebook功能
- 异步并行错误
- 正在删除node.js中已验证的网站
- 为什么在这个网站上不能通过JS访问元素
- 在Redux中,我应该在哪里编写复杂的异步流
- "此网站似乎使用滚动链接定位效果.这可能不能很好地与异步平移一起工作;
- 网站上的异步评论
- 需要将数据从一个网站异步发送到另一个网站
- 方式异步加载谷歌翻译小部件为您的网站
- 有没有一种方法可以异步调用外部API而不会减慢整个网站的速度
- 如何检查网站是否异步启动