私はphpのuse_trans_sidを使用しようとしているので、すべてのURLにphpsessidがあります。しかし、use_trans_sid を 1 に設定すると、AJAX 呼び出しで適切な結果が得られませんでした。どういうわけか結果は切り捨てられました。
use_trans_sid を 0 に戻すと、AJAX 呼び出しは再び適切に結果を取得します。
問題は何でしょうか?
Yii フレームワークを使用しています。
PHP の use_trans_sid を 1 に設定しました。
これにより、PHP はセッション ID を伝搬するコードを挿入します。私の場合、PHP は json オブジェクトにエンコードされた形式で隠し変数を挿入しました。その結果、ajax 呼び出しはリクエスト エラーとして取得します (json オブジェクトを取得しませんでした)。
フォームを「Hello」のような文字列に置き換えることで、これを確認しました。そのため、PHP はセッション ID を伝搬するコードを挿入しませんでした。そしてajax呼び出しはそれを良いjsonオブジェクトとして取得します。
さて、問題は「PHP からこのような割り込みを行う方法は、ajax 呼び出しを妨げませんか?」に変わりました。
ajax url リクエストを確認use_trans_sid=1
します。phpsessid var がない場合は、リクエスト URL に GET パラメータとして手動で追加する必要があります。
use_trans_sid=1
js や ajax ではなく、ページの URL のみを書き換えます。使用すると、PHP は get パラメータでセッション ID を見つけようとします。見つからない場合は、新しいセッションを作成します。
use_trans_sid=0
PHPはCookieセッションIDを介して動作するため、ajaxを使用すると 動作します