当 运行 在本地开发服务器上时,出价示例不起作用

Prebid Example Does Not Work When Running on Local Dev Server

TL;DR:是否可以使用本地 运行 网络服务器使用 Prebid.js v1.6.0 测试 Prebid header 出价?

我已经创建了一个用于集成的库 Prebid header bidding into web applications built with React。它使用 Prebid 0.34.6 工作正常,我在生产中成功使用它。

我现在正在迁移我的库以使用最新版本的 Prebid,1.6.0。我已遵循 migration guide carefully 并实施了其中概述的所有更改。

为了测试我的代码,我设置了一个在本地开发服务器上运行的演示应用程序。

在应用程序的调试输出中,我可以看到已收到出价(日志显示 INFO: Bids Received for Auction with id: aa5d34f4-3eb7-4cb0-a756-6f7cc4a18568)。

但是,广告位中没有显示任何广告素材。我的 bidsBackHandler 回调函数接收一个空的 object 作为参数。当我在浏览器的开发者控制台上调用 pbjs.getAdserverTargeting() 时,我也得到一个空的 object.

Prebid example pages, there is a basic Prebid.js example shown for integrating Prebid into a web page, along with a JSFiddle.

我在我的演示应用程序中使用与 fiddle 中完全相同的单元和 GPT 配置,但无济于事——广告位中没有创意,只有“自家广告”后备,空响应到出价处理程序,清空广告服务器定位。

然后我发现如果我将基本 Prebid.js 示例 fiddle 中的代码复制到本地开发服务器上的 HTML 页面,它也会以同样的方式失败 – 没有创意在广告位中,只有“自家广告”回退,对出价返回处理程序的空响应,空广告服务器定位。

然后我用我的演示创建了一个沙盒 (→ https://codesandbox.io/s/k5w8mr9o23),在那里,我确实得到了想要的结果,显示了演示创意。

似乎使用 Prebid 1.x,当 运行 在本地主机上时,您无法填充广告位。

谁能证实一下?有什么办法可以做到吗?

发生了什么事

Prebid 库需要 cookie 才能工作。它在您的本地开发服务器上失败,因为 cookies are problematic when running the web server on localhost.
您可以通过在 codesandbox 演示和本地服务器上的 JavaScript 控制台中键入 document.cookie 来验证这一点:__gads cookie 将设置在演示运行的位置,但不会设置在本地主机上。

__gadsa cookie set on your domain by Google ads。这可能是他们的问题,而不是 Prebid 的问题。

如何修复

解决此问题的最简单方法是避免将浏览器指向 localhost(或指向 127.0.0.1 或其他本地 IP 地址)。
而是为 127.0.0.1 设置一个不同的主机名(最好包含至少两个点),并使用这样一个。 您可以通过在主机文件中添加一个条目来完成此操作。 Here instructions for Windows, Mac, Linux).

就我而言(Linux 系统;也应该在 Mac 上工作)我将以下行添加到 /etc/hosts 127.0.0.1 www.localhost.localdomain

然后将我的浏览器指向 www.localhost.localdomain:3000,一切正常。
我可以看到 __gads cookie 设置在这个地址,而它没有设置在 localhost:3000.