TL; DR:是否可以使用Prebid.js v1.6.0和本地运行的Web服务器测试Prebid标头出价?
我创建了一个库,用于将Prebid标题出价整合到使用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 回调函数接收一个空对象作为参数。当我在浏览器的开发者控制台上调用pbjs.getAdserverTargeting()
时,我也会得到一个空对象。
在Prebid example pages上,显示了一个基本的Prebid.js示例,用于将Prebid整合到网页中,以及JSFiddle。
我使用与我的演示应用程序中的小提琴完全相同的单位和GPT配置,但无济于事 - 广告位中没有广告素材,只有“自家广告”后备,对回价处理程序的空回复,空广告服务器定位。
然后我发现如果我将基本的Prebid.js示例中的代码复制到我本地开发服务器上的HTML页面,它也会以同样的方式失败 - 广告位中没有广告素材,只有“自家广告”回退,对出价退款处理程序的空响应,空广告服务器定位。
然后我使用我的演示创建了一个沙箱(→https://codesandbox.io/s/k5w8mr9o23),然后,我得到了所需的结果,显示了演示广告素材。
似乎使用Prebid 1.x,在localhost上运行时无法填充广告位。
任何人都可以证实吗?有没有办法使这项工作?
答案 0 :(得分:5)
Prebid图书馆需要使用Cookie。它在本地开发服务器上失败,因为cookies are problematic when running the web server on localhost
您可以通过在代码框演示和本地服务器上的JavaScript控制台中键入document.cookie
来验证这一点:将在演示工作的地方设置__gads
cookie,但不在localhost上设置。
__gads
是a cookie set on your domain by Google ads。这可能是他们自己的问题,而不是Prebid的。
解决此问题的最简单方法是避免将浏览器指向localhost
(或127.0.0.1
或其他本地IP地址)。
而是为127.0.0.1设置不同的主机名(最好包含至少两个点),并使用这样的主机名。
您可以通过向hosts文件添加条目来完成此操作。 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上设置。