3

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おそらくヘッダーを使用して、ホームページをキャッシュしないようにブラウザに明示的に指示する必要がありますか?

4

1 に答える 1

2

ブラウザが異なれば、Cache-Controlヘッダーの値も異なります。

私の知る限り(現時点では優れたソースを引用することはできませんが)、どのブラウザーでもキャッシュが実行されないようにするために、Cache-Controlヘッダーをに設定できます"max-age=0, private, no-store, no-cache, must-revalidate"

于 2012-09-26T15:58:09.233 に答える