ActionScript 3.0 + JavaScript でブラウザなんだけど、サーバを介さずに Twitter とやりとりできるツールを作った。
AS はこんな感じ
: var loader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest(API_PREFIX + apiName + API_SUFFIX); req.method = 'POST'; req.requestHeaders = []; if (opts != null) { var variables:URLVariables = new URLVariables(); for (var propName:String in opts) { variables[propName] = opts[propName]; } req.data = variables; } if (callback != null) { loader.addEventListener('complete', function(e:Event):void { callback(e.target.data); }); } loader.load(req); :
しかし!!!!
localhost ではちゃんと動いていたのに・・・・。サーバに置いた途端動かなくなっちゃった!!!
んー?と思って ngrep してみたら
HTTP/1.1 401 Unauthorized. : (略) : Sorry, due to abusive behaviour, we have been forced to disable posting from external websites. If you are posting from an API tool, please ensure that the HTTP_REFERER header is not set.
えええええええ!
じゃあ、Referer 消せばいいんだな。これを追加してっと。
req.requestHeaders = [ new URLRequestHeader('Referer', '') ];
しかし!!!
ArgumentError: Error #2096: The HTTP request header Referer cannot be set via ActionScript. at flash.net::URLStream/load() at flash.net::URLLoader/load() : :
えええええええええええええええええええええええ!!
Twitter が AS3 のライブラリとか出してるから、てっきりできると思ったのにー><
できないなら、もっと早くいってよおおおおおおおおおおおお!!
まじで。俺の深夜の貴重な時間を返せええええええ
はあ。