Skip to content

Instantly share code, notes, and snippets.

@mala
mala / gist:5268998
Last active December 15, 2015 13:39
データをpostMessageで受け渡すセッション限りのトークン取得(取得しない)フロー

一瞬popup + 以降iframeでproxyするようなもの。XHR level2いらないのでやや動作環境が広がる。

  • クライアント側ボタンクリックで window.open + ランダムなid(これをclient_id相当にする)の名前をつけてiframe埋め込み
  • popup windowにiframeの名前をpostMessageで送る
  • サーバー側: popup windowはiframeに対してpostMessageで返信(event.source.frames.xxxx)、api-domainのoriginであることを確認、cookieで認証してランダムなidとセットで使えるトークン発行
  • トークン保存はmemcachedなど揮発性のストレージで良い。使っている限り期限が延長される。最長期限があってもよい(あったほうがよい)
  • ログアウトとセットで破棄されるようになっていると良い
  • iframeはポップアップwindowからメッセージを受け取る。ランダムなid + トークンを使ってAPIにアクセスする。
  • iframeは親windowからメッセージを受け取る。あとはpostMessageでproxyしてXHRのリクエスト、レスポンスをやり取りする。
  • iframeは親windowからのメッセージであることをevent.originを使って検証する
use strict;
use warnings;
use AE;
use AnyEvent::HTTP;
use Twiggy::Server;
use Plack::Request;
use Plack::Session;
use Plack::Builder;
@arisawa
arisawa / gist:1143624
Created August 13, 2011 08:32
switching perlbrew in .bashrc
appswitch () {
if [ $1 = "app_is_not_selected" ]; then
APP_LC="not selected"
export PERLBREW_ROOT=$HOME/perl5/perlbrew
else
APP=$1
APP_LC=`echo $APP | tr '[A-Z]' '[a-z]'`
export PERLBREW_ROOT=$HOME/perl5/$APP_LC/perlbrew
fi
@riywo
riywo / gist:836630
Created February 21, 2011 03:41
指定秒間だけtcpdumpしてmk-query-digestするshell
#!/bin/sh
SEC=$1
tcpdump -s 65535 -nn -q -tttt -x port 3306 -l > /tmp/tcpdump.3306 2> /dev/null &
PID_3306=$!
tcpdump -s 65535 -nn -q -tttt -x port 11211 -l > /tmp/tcpdump.11211 2> /dev/null &
PID_11211=$!