legacy-knowledge-base
公開されました Sep. 10, 2025

リクエストヘッダがSameSite=LAXの場合、POSTメソッドによるページリダイレクトでセッションが失われる。

written-by

Georgel Pop

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

課題

この問題は、POSTメソッドを使って別のドメインの別のポータルからデータを受信するときに発生します。リクエストヘッダがSameSite=LAXのときに安全でないとみなされますが、このヘッダが(私たちのポータルのように)宣言されていない場合、デフォルトでブラウザがその値をLAXとして設定するためです。
このため、クッキーは拒否されます。コンソールの警告メッセージ「Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute」を見ると、JSESSIONIDがそのうちの一つであることがわかります。
mceclip1.png
Lax Cookieをサイト間で送信できる状況は、次の両方を満たす必要があります:
1. リクエストは、トップレベルのナビゲーションである必要があります。 これは、ユーザーがリンクをクリックして別のサイトに移動するなど、URLバーに表示されるURLが変更された場合に相当すると考えることができます。
2. リクエスト・メソッドは安全なものでなければなりません(例:GETまたはHEAD、ただしPOSTは不可)。
例:
- ユーザーが site-a.com にいて、 site-b.comに行くためのリンクをクリックしたとします。 これはクロスサイトリクエストです。 これはトップレベルのナビゲーションであり、GETリクエストであるため、Laxクッキーはsite-b.comに送信されます。 しかし、結局のところクロスサイト リクエストなので、Strict Cookie は送信されません。
- ユーザーは site-a.com にいて、 site-b.com がロードされている iframe があります。 これはクロスサイトリクエストですが、トップレベルのナビゲーションではありません(ユーザーはまだsite-a.comにいます、つまりiframeが読み込まれてもURLバーは変わりません)。 したがって、LaxクッキーもStrictクッキーもsite-b.comには送られません。
- ユーザーは site-a.com 上にいて、フォームを site-b.comに POST しています。 これはクロスサイトリクエストですが、メソッド(POST)が安全ではありません。 Laxクッキーがクロスサイトに行く基準を満たしていないので、LaxクッキーもStrictクッキーも site-b.comには送られません。

環境

  • DXP 7.0以上

解決

もし、GETメソッドを使用できない場合は、ポータルで行われているように、独自ドメインへのre-POSTを、このフィルタクラス SamlSameSiteLaxCookiesFilter.java で行い、このコンポーネントプロパティを使用するようにしてください。

"before-filter=Session Id Filter"

これにより、フィルターが「HttpServletRequest.getSession(true)」の呼び出しよりも先に処理されることが保証されます。セルフリダイレクトが行われない場合、新しいセッションが作成されないことが重要であるため、cookieの設定は避けるべきです。

追加情報

私たちのポータルに新しいフィルタを追加するには、このページを使用することができます:Servlet Filters 

did-this-article-resolve-your-issue

legacy-knowledge-base