ここ数日頭を悩ませている問題は次のとおりです。
次のことを行う nodeJS アプリがあります。
var VAST = require('vast-xml');
var vast = new VAST();
vast.version = "2.0";
var ad=vast.attachAd({
id : 1
, structure : 'wrapper'
, sequence : 99
, Error: 'http://error.err'
, VASTAdTagURI : 'http://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml'
, AdTitle : 'Common name of the ad'
, AdSystem : { name: 'Test Ad Server', version : '1.0' }
});
response.setHeader('Content-Length', Buffer.byteLength(vast.xml()));
response.setHeader('Connection', 'close');
response.writeHead( 200, {'content-type': 'text/xml; charset=UTF-8'} );
response.end(vast.xml());
上記のコードを呼び出す URL は次のとおりです: http://tag.sprtad.com/?ttj=4 返される XML は次のとおりです。
<VAST version="2.0">
<Ad id="1" sequence="99">
<Wrapper>
<AdSystem version="1.0">Test Ad Server</AdSystem>
<VASTAdTagURI>
<![CDATA[http://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml ]]>
</VASTAdTagURI>
<Error>
<![CDATA[http://error.err ]]>
</Error>
<Creatives />
</Wrapper>
</Ad>
</VAST>
ここで、まったく同じ XML を返すファイルを次に示します: http://serve.sprtad.com/test.xml
問題は次のとおりです。
XML が有効であることを確認するために、この VAST-Validator を使用しています: https://developers.google.com/interactive-media-ads/docs/vastinspector_dual
最初の URL または 2 番目の URL を VAST タグ テキストボックスに貼り付けて、[広告のテスト] ボタンをクリックするだけです。
ビデオ プレーヤーの下には、ログ コンソールがあります。ログを見ると、最初のリンクではエラーが返され、2 番目のリンクでは問題なく動作することがわかります。
XML を動的に提供することと、XML ファイルを提供することの違いを特定することはできません。