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 のライブラリとか出してるから、てっきりできると思ったのにー><
できないなら、もっと早くいってよおおおおおおおおおおおお!!
まじで。俺の深夜の貴重な時間を返せええええええ
はあ。