Closed yudai524 closed 2 years ago
クエリストリングにエンコードされていない * を含むケースで MW_WP_Form_Redirected::redirect_js が実行されてしまい、無限リダイレクトになってしまう問題があります。
*
MW_WP_Form_Redirected::redirect_js
具体的には下記のような URL のケースです。 クエリストリングの値は適当なものに変えていますが、 _gl のクエリに * が見て取れると思います。 Google Tag Manager でクロスドメインの設定をするとついてくるクエリのようです。
_gl
https://example.com/mw-wp-form/?_gl=1*19y7nkn*_gcl_aw*R0NMLjE2NTU0NDgwMDkuRUFJYUlRb2JDaE3JX3JTSTktbXatQUlWVTNtTENoM3dxUXZwRUFBWUFTPUFAZ1pCUFBEX0J3RQ..&_ga=3.191170476.1866291236.1655446868-532569050.1655446868&_gac=2.12183168.1655448119.EBIoIQobBhAI_rTI9-mz-AIVU3mLCh3wqQvpEAAYASAAAgJBPPD_BwE
http_build_query が * をエンコードして %2A にしまうので、MW_WP_Form_Redirected::_get_real_redirect_url でアーリーリターンが走らず、リダイレクトされてしまいます。
http_build_query
%2A
MW_WP_Form_Redirected::_get_real_redirect_url
症状
クエリストリングにエンコードされていない
*
を含むケースでMW_WP_Form_Redirected::redirect_js
が実行されてしまい、無限リダイレクトになってしまう問題があります。具体的には下記のような URL のケースです。 クエリストリングの値は適当なものに変えていますが、
_gl
のクエリに*
が見て取れると思います。 Google Tag Manager でクロスドメインの設定をするとついてくるクエリのようです。原因
http_build_query
が*
をエンコードして%2A
にしまうので、MW_WP_Form_Redirected::_get_real_redirect_url
でアーリーリターンが走らず、リダイレクトされてしまいます。