発生している問題・エラーメッセージ
これまで問題なく動いていたアプリのログイン周りの機能が、safariだけ機能しなくなり、safariユーザーがアプリに新規登録・ログインができなくなりました。
###ログイン機能の実装方法
Rails側ではdevise + devise token authを用いてログイン機能を実装しており、React側からPOST API通信でユーザー情報を送信しています。
【React】
JavaScript
1const end_point = 'http://localhost:3001'; 2 const agent = new https.Agent({ 3 rejectUnauthorized: false, 4 }); 5let header = { 6 'Content-Type': 'application/json', 7 'Accept': 'application/json', 8 'access-token': ``, 9 'client': ``, 10 'uid': ``, 11} 12let myHttpClient = axios.create({ 13 xhrFields: { 14 withCredentials: true, 15 }, 16 httpsAgent : agent, 17 headers : header, 18 data : {}, 19}); 20 21// ログイン 22export async function post_login_api(action, data) { 23 let postResponse = ''; 24 try { 25 postResponse = await myHttpClient.post(end_point + action, data); 26 } 27 catch (error){ 28 return "loginfalse"; 29 } 30 return postResponse; 31} 32 33//ログインボタン押下時の処理 34post_login_api('api/v1/auth/sign_in', loginData).then((result) => { 35 if (result == 'loginfalse') { 36 setLoading(false); 37 window.scrollTo(0, 0); 38 alert("メールアドレス・パスワードが正しくありません。"); 39 return; 40 } else { 41 dispatch({ 42 type: 'ADD_USERID', 43 value: result.data.data.id 44 }); 45 dispatch({ 46 type: 'ADD_USERHEADER', 47 access: result.headers["access-token"], 48 client: result.headers.client, 49 uid: result.headers.uid, 50 }); 51 // TOP画面に遷移 52 dispatch(push('/top')) 53 } 54})
safariブラウザのセキュリティバージョンアップ(https://support.apple.com/ja-jp/HT211102)が行われたことによる、クロスドメイン?対応の強化による最新のSafariブラウザで発生する障害であることまでは判明しました。
プログラムの修正と言うよりかは、サーバー側の設定の修正が必要ではないかと言うことなのですが、
自分の経験が浅く何をどのように改修すれば修正に繋がるのかがわからず困っています。
修正方法についてご教示いただけると助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー