Ajax,PHPとajaxのドメイン間、セッション保存


jqueryのajaxメソッドをベースに、独自のajaxをカプセル化することで、ベースのデータを統一でき、変更時にも便利です
import $ from "jquery"
const baseurl="server/"
const myajax={
    postajax:function (options){
        options.url = baseurl+options["url"];
        options.type = "POST";
        options.contentType = "application/x-www-form-urlencoded;charset=utf8";
        options.dataType = 'json';
        options.crossDomain = "true";
        options.xhrFields = {
            withCredentials: true//           Cookie,        
        }		
        // options.context = ""       context    
        $.ajax(options);
    }
}

まず、POST要求はContentType要求ヘッダの値をアプリケーション/x-www.form-encodedとし、データフォーマットをutf-8とする必要がある.
その後datatypeがjsonに設定されると、サーバ側はjson形式のデータを返します.
次に、ドメイン間で発生した問題について、リクエストサーバと現在のアドレスのIP、ポートが異なると、ドメイン間で問題が発生し、ajaxが送信したリクエストは別のサーバで拒否され(localhostと127.0.0.1でもドメイン間でリクエストが発生する問題があります)、サーバにドメイン間で許可を設定する必要があります.
しかし、ドメイン間ではセッションを格納できないという新しい問題があります.つまり、セッションは保存されず、すべてのリクエストが新しいセッションであるということです.ajaxは、指定したブラウザがクッキーを送信することを表示するように設定します.ドメイン間ではデフォルトでは使用されません.次のコードを使用する必要があります.
options.crossDomain = "true";
options.xhrFields = {
    withCredentials: true//           Cookie,        
}	

PHP側の設定はドメイン間を許可する:
header("Content-Type: application/x-www-form-urlencoded;charset=utf8"); 
header('Access-Control-Allow-Origin:http://aaa.com');
//     session      *
header("Access-Control-Allow-Credentials: true" );//    cookie

まず肯定時にpostを使用するときに要求ヘッダ「Content-Type:application/x-www-form-urlencoded;charset=utf 8」を設定する
そしてAccess-Control-Allow-Originはドメイン間を許可するアドレスを設定し、*はすべてのアドレスを許可するか、複数のアドレスを書くことができ、中間は「,」で区切られていますが、sessionを使用すると*を使用できず、アドレスを指定する必要があります.
最後にAccess-Control-Allow-CRedentials:trueを設定すると、セッション情報をsessionで保存できます.