一部のクラウド プロバイダーの外部で PlayFramework 2.5.x サーバーを実行しています。ランディング ページには次の詳細があります。
@(webJarAssets: WebJarAssets, form: Form[(String,String,String)], user: Option[User]=None)(implicit flash: Flash, messages: Messages)
....
@if(user.isDefined){
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> @{user.get.firstName} <b class="caret"></b></a>
}
基本的に twirl は、ログに記録されたユーザーに彼の名前がメニューのどこかにあることを示すために使用されます
しかし問題は、会社のプロキシがこのフロントページをキャッシュしているため、そのページにアクセスする会社の全員が最後に記録されたファーストネームを取得することです (そのユーザーはサーバーにログインしているように見えます)。F5 が役立ちます (ただし、より良い解決策を探しています)
奇妙なことは、プロキシが Play サーバーと通信していることです。これは、このキャッシュされたサービングが発生しているときにログに記録されるためです。
2017-01-12 16:55:31 application-akka.actor.default-dispatcher-138 [DEBUG] a.s.impl.io.InputStreamPublisher application-akka.stream.default-blocking-io-dispatcher-144 - No more bytes available to read (got `-1` from `read`)
プロキシが Play サーバーに質問しているかのように、これで問題ないでしょうか? ページの HTTP メタは次のようになります。
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
F5を押すとサーバーに移動し、通常のコンテンツを取得します(ただし、これはプロキシの障害だと思います)。誰でもこの問題を経験しましたか?