TL; DR:是否可以在本地运行的Web服务器上使用Prebid.js v1.6.0测试Prebid header 出价?
我创建了一个库,用于将Prebid header 出价集成到使用React构建的Web应用程序中。使用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集成到网页中。
我使用与演示应用程序中的 fiddle 中使用的完全相同的单位和GPT配置,但无济于事–广告位中没有广告,只有“自家广告”后备,对出价控制处理程序无响应,广告服务器无响应定位。
然后,我发现是否将代码从基本的Prebid.js示例 fiddle 复制到本地开发服务器上的HTML页面,它也以相同的方式失败-广告位中没有广告,只有“自家广告”后备,响应为空到回价处理程序,将广告服务器定位为空。
然后,我用演示创建了一个沙箱(→https://codesandbox.io/s/k5w8mr9o23),在那里,我确实得到了期望的结果,演示了演示广告。
似乎使用Prebid 1.x,在localhost上运行时无法填充广告位。
有人可以确认吗?有没有办法使这项工作?
最佳答案
发生了什么
Prebid库需要cookie才能工作。由于cookies are problematic when running the web server on localhost在本地开发服务器上失败。
您可以通过在codesandbox演示和本地服务器上的JavaScript控制台中键入document.cookie
进行验证:将在演示工作的地方设置__gads
cookie,但不在本地主机上。__gads
是a 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上设置。
关于javascript - 在本地D上运行时,前置示例不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49831824/