发送跨域请求以记录数据

时间:2011-06-24 18:18:12

标签: javascript jquery ajax cross-domain

我正在开发广告平台。当有人点击图片时,我想将请求发送回我的服务器以记录此操作。我有一个预先生成的URL。如果我向此网址发送请求,它会记录数据。

我的问题是日志网址在我的域中,而javascript正在客户端的域中执行。如果不修改日志记录php脚本(添加类似Access-Control-Allow-Origin:*的东西),有没有办法将此请求发送到新域?

由于我只记录数据,因此服务器只发送文本“OK”(这是我不需要的信息)。

5 个答案:

答案 0 :(得分:2)

这是一个黑客,但它是常用的。单击时将图像附加到DOM,并将src设置为日志记录URL。为了友好,请将日志记录URL的输出设置为1x1像素图像。你必须通过GET字符串传递参数,但它会起作用。

答案 1 :(得分:2)

在您的域(图片或iframe)上创建包含源的任何动态DOM元素,将记录数据附加到请求。

var logData = function(data){
if(data === undefined){
    return;
}

var img=document.createElement("img");
img.setAttribute('src', 'http://another.domain?'+data);
img.setAttribute('height', '1px');
img.setAttribute('width', '1px');
document.body.appendChild(img);}

您的日志请求现在将显示在IIS日志中

答案 2 :(得分:2)

您应该能够将Ajax HTTP请求发送到任何域。我没有看到问题是什么......这是响应受同源策略限制,而不是请求本身。如果域不匹配,则无法访问PHP脚本的响应,但服务器将正常处理请求,即使它来自不同的域。

答案 3 :(得分:0)

跨域脚本限制在浏览器级别实施,作为安全预防措施,因此没有简单的代码修复来解决它们。但是,您可以查看JSONP(带填充的JSON)作为起点。

答案 4 :(得分:0)

您可以创建一个隐藏的iframe,并将src属性设置为日志记录网址。这至少与上面列出的图像方法一样难看。