Node.js请求获取VAST代码

我正在尝试对某个返回VAST标记的url发出GET请求。 当我curl的URL, curl -v 'http://a.host.for.vasttag.com/foo/ad.jsp?fooid=someidhere'我收到正常的HTML像这样:

 <script type="text/javascript" src="foobar.js"></script><script type="text/javascript">var FOO_customization = {"account":"foo1","playerid":"foo1232","inapp":"true","domain":"foodomain.com"}</script><script type="text/javascript" id="exampleBanner" src="http://this.is.net/banner/LATEST/inbanner.min.js"></script> 

我想在我的node.app中收到相同的响应,但我只收到这个:

 <?xml version="1.0" encoding="utf-8"?> <VAST version="3.0"></VAST> 

我做错了什么? 这是我的代码:

 var http = require('http') var options = { method : 'GET', host: 'a.host.for.vasttag.com', port: 80, path: '/foo/ad.jsp?fooid=someidhere', headers: {'Content-Type': 'text/html'}, } http.get(options, function(res) { console.log("Got response: " + res.statusCode) res.on("data", function(chunk) { console.log(chunk) }) }).on('error', function(e) { console.log("Got error: " + e.message) }) 

这看起来可能有些奇怪,但除非您指定了User-Agent否则某些VAST引擎将不会提供响应

这是我的VAST服务器人告诉我的。

并且User-Agent是协议的强制性头部,以便获得VAST响应(用于广告定位)。 这就是为什么没有User-Agent你得到一个空的答复。

尝试添加

 var options = { method: 'GET', host: 'a.host.for.vasttag.com', port: 80, path: '/foo/ad.jsp?fooid=someidhere', headers: { 'Content-Type': 'text/html', 'User-Agent': 'Fiddler' //here } }; 

PS:我用Fiddler因为它是最短的,它的工作。

Interesting Posts