Пример Prebid не работает при запуске на локальном сервере Dev

TL;DR: можно ли протестировать ставки заголовка Prebid с помощью Prebid.js v1.6.0 на локально работающем веб-сервере?

Я создал библиотеку для интеграции ставок заголовков Prebid в веб-приложения, созданные с помощью React. Он отлично работает, используя Prebid 0.34.6, и я успешно использую его в производстве.

Сейчас я перевожу свою библиотеку, чтобы использовать последнюю версию Prebid, 1.6.0. Я внимательно следил за руководством по миграции и реализовал все изменения, изложенные там.

Чтобы проверить мой код, я настроил демонстрационное приложение, которое запускается на локальном сервере разработчика.

В выводе отладки приложения я вижу, что ставки получены (журнал говорит INFO: Bids Received for Auction with id: aa5d34f4-3eb7-4cb0-a756-6f7cc4a18568).

Однако в рекламных местах объявления не показываются. Моя функция обратного вызова bidsBackHandler получает пустой объект в качестве аргумента. Когда я звоню pbjs.getAdserverTargeting() на консоли разработчика браузера я также получаю пустой объект.

На страницах примеров Prebid приведен базовый пример Prebid.js для интеграции Prebid в веб-страницу вместе с JSFiddle.

Я использую те же единицы измерения и настройки GPT, которые использовались в скрипте в моем демонстрационном приложении, но безрезультатно - в рекламных местах нет креатива, есть только запасной вариант "домовой рекламы", пустой ответ на обработчик заявок, пустой сервер объявлений. таргетинг.

Затем я обнаружил, что если я скопирую код из основного примера скрипта Prebid.js на HTML-страницу на моем локальном dev-сервере, он тоже не сработает - нет рекламных мест в рекламных местах, только откат для "домашней рекламы", пустой ответ в обработчик заявок, таргетинг на пустой рекламный сервер.

Затем я создал песочницу с моей демонстрацией (→ https://codesandbox.io/s/k5w8mr9o23), и там я получаю желаемый результат, показывается демонстрационное объявление.

Кажется, что с Prebid 1.x, вы не можете заполнить рекламные места при работе на localhost.

Кто-нибудь может это подтвердить? Есть ли способ сделать эту работу?

1 ответ

Решение

Что происходит

Библиотека Prebid нуждается в куки для работы. Он не работает на вашем локальном dev-сервере, потому что cookie-файлы проблематичны при запуске веб-сервера на localhost.
Вы можете проверить это, набрав document.cookie в консоли JavaScript на демонстрации codeandbox и на локальном сервере: __gads Cookie будет установлен там, где работает демо, но не на localhost.

__gads это файл cookie, установленный на вашем домене рекламой Google. Вероятно, это проблема их стороны, а не Prebid.

Как это исправить

Самый простой способ исправить это - не указывать браузеру localhost (или для 127.0.0.1 или другие локальные IP-адреса).
Вместо этого установите другое имя хоста для 127.0.0.1 (предпочтительно содержащее как минимум две точки) и используйте его. Вы можете сделать это, добавив запись в ваш файл hosts. Здесь инструкция для Windows, Mac, Linux).

В моем случае (система Linux; должна также работать на Mac) я добавил следующую строку в /etc/hosts: 127.0.0.1 www.localhost.localdomain

Затем направил мой браузер на http://www.localhost.localdomain:3000/, и все заработало.
Я вижу, что __gads cookie установлен по этому адресу, но не установлен на http://localhost:3000/.

Другие вопросы по тегам