【问题标题】:Send a cross-domain request to log data发送跨域请求记录数据
【发布时间】:2011-06-25 02:39:54
【问题描述】:

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

我的问题是日志 url 在我的域中,而 javascript 正在客户端的域中执行。在不修改日志记录 php 脚本(添加诸如 Access-Control-Allow-Origin: * 之类的内容)的情况下,有没有办法将此请求发送到新域?

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

【问题讨论】:

  • 我没有意识到这一点。谢谢。如果您将其作为答案(而不是评论),我会接受它
  • 好的,让我知道它是如何为你工作的......

标签: javascript jquery ajax cross-domain


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      使用您的域上的源(图像或 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 日志中

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2019-02-11
            • 2015-04-22
            • 2015-07-10
            • 2012-12-04
            • 1970-01-01
            • 2014-11-24
            • 2019-09-13
            • 1970-01-01
            • 2012-06-05
            相关资源
            最近更新 更多