সাফারি 13+ ইফ্রেমে সিওআরএস কুকিজ ব্লক করে


9

সাফারি ফ্ল্যাট আউট আপনাকে অভিভাবক ডোমেনের চেয়ে আলাদা ডোমেনের আইফ্রেমে কুকিজ সেট করতে দেয় না, সার্ভার-সাইড সিওআরএস শিরোনাম নিন্দিত হতে পারে।

স্পষ্ট করার জন্য: ব্যবহারকারী ডোমেনএ.কম এ আছেন। ডোমেইনবি.কমের জন্য একটি আইফ্রেম উন্মুক্ত এবং আইফ্রেমের অভ্যন্তরে ডোমেনবি.কমের ব্যবহারকারীকে প্রমাণীকরণের চেষ্টা করে। সেট-কুকির শিরোনামটি ডোমেন বি ডটকমের ভিতরে সার্ভার থেকে সমস্ত আইটেমের সাথে যদি ইফ্রেমে ফিরে আসে তবে সাফারি এটি পরবর্তী কলগুলিতে ফিরে পাঠাচ্ছে না।

একজন পুরানো কর্মচারী ইফ্রামের কাছ থেকে একটি ফর্ম জমা দিচ্ছিল এবং প্রতিক্রিয়ার মধ্যে কুকি সেট করছিল। আমি অনুমান করি যে তারা ফর্মটি জমা দেওয়ার জন্য কোনও কিছুর উপর ক্লিক করছিল এ বিষয়টি তারা পছন্দ করেছেন। প্রতিক্রিয়া কখন ফিরে এসেছে তা দেখার জন্য আপনাকে কুকির জন্য পোল করতে হবে, ফর্ম জমা দেওয়ার কোনও কলব্যাক নেই, এবং এইচটিটিপি কেবল কুকিগুলির ক্ষেত্রে আপনি এটি করতে পারেন নি, আরে, এটি কাজ করেছিল! না হওয়া পর্যন্ত।

তারপরে, আরও সাম্প্রতিক কাজটি ব্যবহারকারীকে একেবারে নতুন উইন্ডো / ট্যাবে আইফ্রেমে ডোমেনে পুনঃনির্দেশ করছিল, সেখানে একটি এলোমেলো কুকি সেট করছে এবং সেই মুহুর্ত থেকে সেই সাবডোমেনটি আইফ্রেমের অভ্যন্তরে "বিশ্বাসযোগ্য" ছিল। আবার নতুন উইন্ডো / ট্যাবটি খোলার জন্য এটিতে ক্লিকের প্রয়োজন ছিল এবং নতুন ট্যাবটি খোলার দৃশ্য চিত্রও ছিল। অনেক সুরক্ষা, যেমন মান।

এবং এখন, সাফারি 13 হিসাবে - আর কার্যকারিতা নেই। আর কোনো নিরাপদ আইফ্রেম কুকি সেটিং 🤬

অন্য কোনও প্রমাণীকরণের স্কিম আমাদের পক্ষে ভাল নয় (যেমন আথ-এক্স শিরোনাম)। আমাদের একটি এইচটিপিপি কেবলমাত্র সুরক্ষিত কুকি ব্যবহার করা দরকার, কারণ আমরা চাই না যে টোকনটি কোনওভাবেই জাভাস্ক্রিপ্ট ক্লায়েন্ট-সাইডের দ্বারা অ্যাক্সেসযোগ্য হোক।

পরিষ্কার হয়ে উঠতে, অন্য যে কোনও ব্রাউজারে সবকিছু দুর্দান্ত কাজ করে।

প্রাসঙ্গিক ওয়েবকিট বাগজিলা

যে কেউ কোন পরামর্শ আছে?

সম্পাদনা:

@Tomschmidt লিঙ্কের জন্য ধন্যবাদ, এটি সঠিক দিকের মতো বলে মনে হচ্ছে। আমি অ্যাপলের স্টোরেজ অ্যাক্সেস এপিআই ব্যবহার করার চেষ্টা করেছি, তবে দুর্ভাগ্যক্রমে, যদিও আমি এপিআই দিয়ে আমার লগইন যুক্তি শুরুর আগে অ্যাক্সেসের জন্য অনুরোধ করার বিষয়টি নিশ্চিত করছি:

requestStorageAccess = async() => {
    return new Promise(resolve => {
      //@ts-ignore
      document.requestStorageAccess().then(
        function () {
          console.log('Storage access was granted');
          resolve(true);
        },
        function () {
          console.log('Storage access was denied');
          resolve(false);
        }
      );    
    });
  }


const storageAccessGranted = await requestStorageAccess();
console.log(storageAccessGranted) // prints 'true'
await login();

তবুও, / লগইন এপিআই প্রতিক্রিয়াতে প্রাপ্ত কুকিগুলি পরবর্তী কলগুলিতে এপিআইতে পাঠানো হচ্ছে না :(


এটি অনক্লিকের মতো ইফ্রামের সাথে সুস্পষ্ট মিথস্ক্রিয়ায় কেবল ট্রিগার হয়ে গেছে তা নিশ্চিত করুন।
tomschmidt

1
হ্যাঁ, আমি এটি এটিই করেছিলাম। আমি যে ওয়েবকিট বাগিজিলা ইস্যুটির সাথে লিঙ্ক করেছি তা পরীক্ষা করে দেখুন, আমার ধারণা সাফারির শেষের দিকে এটি একটি আসল বাগ: /
টম টেমেন

সমস্যাটি হ'ল কুকিজ প্রেরণ করা হয় নি। আপনি যদি স্টোরেজ অ্যাক্সেসের অনুরোধ করেন তবে বিদ্যমান কুকিগুলি সার্ভারে প্রেরণ করা হবে। সমস্যাটি হ'ল যে কোনও নতুন কুকিজ মোটেই সঞ্চিত নয়, সুতরাং সেগুলি পাঠানোর মতো নেই।
ম্যাট কোসেন্টিনো

@ ম্যাটকোসেন্টিনো হ্যাঁ, এটাই আমি বোঝাতে চেয়েছি - "লগইন এপিআই প্রতিক্রিয়াতে প্রাপ্ত কুকিজ" নতুন কুকিজ যা ইফ্রেমে ডোমেইনের সেট-কুকির শিরোনাম প্রতিক্রিয়াতে ফিরে পাঠানো হয়, তবে আইফ্রেমে ডোমেনের পরবর্তী কলগুলিতে সেগুলি অন্তর্ভুক্ত নয় অনুরোধে কুকিজ। সুতরাং হ্যাঁ, সমস্যার মূল কথাটি বলা আরও সঠিক যে এই দৃশ্যে ব্রাউজারে কোনও নতুন কুকি সংরক্ষণ করা হচ্ছে না।
টম তেমন

উত্তর:


1

আমি মনে করি আমি সম্ভবত সমাধানটি পেয়েছি: অ্যাপলের স্টোরেজ অ্যাক্সেস এপিআই: https://webkit.org/blog/8124/introducing-stores-access-api/


আরে, ধারণার জন্য ধন্যবাদ, তবে আমি ভয় করি যে এটি কৌশলটি করেনি (আমার উত্তর সম্পাদনাটি দেখুন)
টম টেন

1
সাফারি নিয়েও আমার একই সমস্যা আছে 13. কোনও কাজের সমাধান?
নিরোষণ

0

সুতরাং, যতক্ষণ না নতুন উইন্ডো আপনি যে কুকিটি সংরক্ষণ করতে চান সেই কুকিটি যতক্ষণ সংরক্ষণ করবে ততক্ষণ কাজটি বন্ধ হয়ে যাবে। Iframe এখনও এটি নিজস্ব কুকিজ সংরক্ষণ করতে পারে না। আমার ক্ষেত্রে, আমার কেবলমাত্র সেশন আইডি কুকি দরকার ছিল। সুতরাং, ব্যবহারকারী যখন স্টোরেজ অ্যাক্সেস দেয় তখন আমি একটি ছোট পপআপ উইন্ডো খুলি। এটি সেশন আইডি কুকি পায় এবং সঞ্চয় করে, iframe বন্ধ করে এবং পুনরায় লোড করে। Iframe এর পরে সেশন আইডি কুকিতে অ্যাক্সেস রয়েছে এবং পরবর্তী অনুরোধগুলিতে এটি প্রেরণ করে। আমি মনে করি এটি সাময়িক হলেও, মনে হচ্ছে ভবিষ্যতে তারা পপআপ উইন্ডো থেকে স্টোরেজ অ্যাক্সেস সরিয়ে ফেলবে। হয়তো তারা ততক্ষণে কুকিগুলি সংরক্ষণ করতে সক্ষম না হয়ে iframe ঠিক করে ফেলবে।


ম্যাট, আমি একটি পপ-আপের সাথে অনুরূপ সমাধান ব্যবহার করেছি, যা ডেস্কটপ সাফারি ১৩.১ এ কাজ করে তবে একটি আইপ্যাড সাফারি ১৩.৪ পরীক্ষা করে এটি কাজ করছে না। আপনি কি কোনও আইপ্যাডে এই কাজটি করতে পেরেছিলেন? Thnx
teamdane
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.