@Søren 关于邮递员的有用帖子,我以前从未使用过。不幸的是,我仍然花了一些时间来弄清楚为什么我对https://www.google-analytics.com/batch的调用在 Javascript 中不起作用,并引用了 CORS 403 错误作为问题。在 Postman 中它工作正常,但 Postman 的 JS 输出却不行。
var settings = {
"async": true,
"crossDomain": true,
"url": "https://www.google-analytics.com/batch",
"method": "POST",
"headers": {
"cache-control": "no-cache",
"postman-token": "bec425da-11af-ec17-f702-fd7d01133ee4"
},
"data": "v=1&tid=UA-XXXXXX-1&cid=754654B98786B&t=event&ec=Test1&ea=click&cd=XYZ&an=XYZ&aid=123&av=3.0&aiid=1.0\r\nv=1&tid=UA-XXXXXX-1&cid=754654B98786B&t=event&ec=Test2&ea=click&cd=XYZ&an=XYZ&aid=123&av=3.0&aiid=1.0\r\nv=1&tid=UA-XXXXXX-1&cid=754654B98786B&t=event&ec=Test3&ea=click&cd=XYZ&an=XYZ&aid=123&av=3.0&aiid=1.0"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
因此,使用 Fiddler 并比较 Postman 的调用,我在 Raw 视图中看到的唯一真正区别是 Postman 使用的是 POST https://www.google-analytics.com/batch,而 JS 使用的是 OPTIONS https://www。 google-analytics.com/batch。通过执行原始脚本并将其从 OPTIONS 更改为 POST,它工作正常。那么为什么我的不作为 POST 发送呢?然后我阅读了一些关于标题需要匹配的内容,否则它将不会作为 POST 执行。那么解决方案呢?删除标题...
var settings = {
"async": true,
"crossDomain": true,
"url": "https://www.google-analytics.com/batch",
"method": "POST",
"data": "v=1&tid=UA-XXXXXX-1&cid=754654B98786B&t=event&ec=Test1&ea=click&cd=XYZ&an=XYZ&aid=123&av=3.0&aiid=1.0\r\nv=1&tid=UA-XXXXXX-1&cid=754654B98786B&t=event&ec=Test2&ea=click&cd=XYZ&an=XYZ&aid=123&av=3.0&aiid=1.0\r\nv=1&tid=UA-XXXXXX-1&cid=754654B98786B&t=event&ec=Test3&ea=click&cd=XYZ&an=XYZ&aid=123&av=3.0&aiid=1.0"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
我花了相当多的时间来完成这个工作,对于这么简单的事情,希望这能帮助别人。