Я пытаюсь отправить сообщение в Google Analytics под узлом с помощью простого запроса http, например:
var http = require("http");
var post_options = ({
host: "www.google-analytics.com",
path: "/collect",
body: "ec=a&ea=bb&ev=1&cid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&v=1&tid=UA-123456789-0&t=event",
method: "POST",
headers: {}
});
http.request(post_options, function (res) {
console.info(res);
}).end();
но он никогда не достигает сервера Google Analytics, и я не вижу его там в своей статистике. Использование https таким образом тоже не работает:
var http = require("http");
var post_options = ({
hostname: "www.google-analytics.com",
port: 443,
path: "/collect",
body: "ec=a&ea=bb&ev=1&cid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&v=1&tid=UA-123456789-0&t=event",
method: "POST",
headers: {}
});
https.request(post_options, function (res) {
console.info(res);
}).end();
Если я попробую это с модулем request, вот так:
var request = require("request");
var path = "https://www.google-analytics.com/collect";
var options = { "body": "ec=a&ea=bb&ev=1&cid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&v=1&tid=UA-123456789-0&t=event", "headers": {} }
request.post(path, options, (err, httpResponse, body) => {
console.info(httpResponse);
});
он сразу отображается на сервере Google Analytics. Есть идеи, что не так с моим первым подходом?





Первый подход использует основной модуль http, поэтому он будет делать запрос POST к http://www.google-analytics.com/collect. Вместо этого переключитесь на основной модуль https.
https не решает проблему. Я обновил свой вопрос. Любые другие идеи, почему отправка сообщения не отображается в аналитике Google? Тем интереснее, что я получил ответ от Google как с http, так и с https с кодом состояния 200.