Пример 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/.