发送跨域请求以记录数据
Send a cross-domain request to log data
我正在一个广告平台上工作。当有人点击图像时,我想向服务器发送一个请求,以记录此操作。我有一个预先生成的url。如果我向这个url发送请求,它会记录数据。
我的问题是日志url在我的域上,而javascript是在客户端的域中执行的。在不修改日志php脚本的情况下(添加类似Access Control Allow Origin:*的内容),有没有办法将此请求发送到新域?
由于我只记录数据,服务器只发送回文本"OK"(这是我不需要的信息)。
您应该能够向任何域发送Ajax HTTP请求。我不知道问题出在哪里…是受同源政策限制的响应,而不是请求本身。如果域不匹配,则无法访问PHP脚本的响应,但服务器将正常处理请求,即使请求来自不同的域。
这是一个破解,但它很常用。单击将图像附加到DOM,src设置为日志URL。为了友好起见,日志URL的输出是1x1像素的图像。您必须通过GET字符串传递参数,但这是可行的。
在域(image或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日志
跨域脚本限制是在浏览器级别强制执行的,作为安全预防措施,因此没有简单的代码修复来解决这些问题。但是,您可以将JSONP
(带填充的JSON)作为一个起点。
您可以创建一个隐藏的iframe
,其中src
属性设置为日志URL。这至少和上面列出的图像方法一样丑陋。
相关文章:
- 更新成员数据模型中的记录列表
- 在页面上记录数据并实现pushstate()的最佳方式
- Firebase:如何从存在特定密钥的数据中检索记录
- 数据中的一条记录使用浮动图时未创建饼图
- Chrome扩展-使用javascript定期运行,并永久记录数据
- 在本地使用浏览器历史记录时刷新页面后数据消失
- 使用 Prepare 语句插入数据不会返回插入的记录
- 单击事件不起作用,当我在 jquery 数据表中显示每页 25 条记录时
- lunr.js添加有关索引记录的数据
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- 基于表单输入值,如何 2 生成选择 4 下拉菜单 w 数据库中的行/记录数据,该数据库将在选择时预填充表单
- 如何为下拉菜单生成选择,其中包含数据库中的行/记录数据,该数据库将在选择时预填充表单
- 隐藏数据表中的记录
- 默认情况下,从数据列表中选择第一条记录
- 使用AngularJS分两步记录数据
- 如何在ext-js网格中将记录数据显示为链接
- 从输入中获取数据,并在提交按钮上单击控制台日志记录数据
- EXTJS 3.4如何在选择更改时获取记录数据视图
- 发送跨域请求以记录数据
- 使用可稍后处理的防油剂存储或记录数据