代码之家  ›  专栏  ›  技术社区  ›  ikenator

节点。js请求获取VAST标记

  •  1
  • ikenator  · 技术社区  · 8 年前

    我正在尝试向某个返回VAST标记的url发出GET请求。当我卷曲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>
    

    我想收到 我的节点中的响应。应用程序,但我只收到以下内容:

    <?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)
    })
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   codeandcloud    8 年前

    这似乎有点奇怪,但一些VAST引擎不会给出响应,除非您指定 User-Agent

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

    为了获得VAST响应(用于广告定位),用户代理是协议的强制标头。这就是为什么如果没有用户代理,您会得到一个空响应。

    尝试添加

    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
        }
    };
    

    注:我用的是Fiddler,因为它是最短的,而且有效。