inc2734 / mw-wp-form

69 stars 46 forks source link

アスタリスクを含む URL で無限リダイレクトが発生する #128

Closed yudai524 closed 2 years ago

yudai524 commented 2 years ago

症状

クエリストリングにエンコードされていない * を含むケースで MW_WP_Form_Redirected::redirect_js が実行されてしまい、無限リダイレクトになってしまう問題があります。

具体的には下記のような URL のケースです。 クエリストリングの値は適当なものに変えていますが、 _gl のクエリに * が見て取れると思います。 Google Tag Manager でクロスドメインの設定をするとついてくるクエリのようです。

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アーリーリターンが走らず、リダイレクトされてしまいます。