Sinatraアプリのimonaplaneと同じTwitter認証コードを使用するWebアプリケーションがあります。
ホームページには「Twitterでサインイン」またはパーソナライズされたコンテンツが表示されています。サインインすると、(HTTP 302経由で)ホームページにリダイレクトされます。
get '/session_auth' do
if params[:oauth_verifier]
access_token = twitter_client.authorize(
session[:request_token], session[:request_token_secret], oauth_verifier: params[:oauth_verifier])
if twitter_client.authorized?
user = db.load(User.to_id(twitter_client.info['screen_name'])) || User.new(login: twitter_client.info['screen_name'], twitter_access_token: access_token.token,
twitter_secret_token: access_token.secret)
db.save! user
session[:user_id] = user.id
end
end
redirect '/'
end
これは、Firefox14.0.1とSafari5.1.7、およびiOSシミュレーターで正常に機能します。
ただし、iOS5.1.1のMobileSafariが一般化されたホームページをキャッシュしているように見えます。これにより、「Twitterでサインイン」がまだ表示されているため、ログインしていないという印象を与えます。リロードすると、パーソナライズされたコンテンツが表示されます。
これは、Heroku、Cedarスタックで実行されています。HTTPキャッシュヘッダーは使用されません。
ここでの問題は何ですか?Cache-Control: private
おそらくヘッダーを使用して、ホームページをキャッシュしないようにブラウザに明示的に指示する必要がありますか?