সাফারিতে স্টোরেজ অ্যাক্সেস এপিআই ব্যবহার করে আইফ্রেমে কুকি সেট করা যায় না


9

আমার পৃষ্ঠায় একটি ইফ্রাম আছে সাফারি তৃতীয় পক্ষের কুকিগুলিকে অবরুদ্ধ করে রেখে, আমি এখানে 'বিকাশকারী গাইডেন্স' এর অধীন প্রস্তাবিত স্টোরেজ অ্যাক্সেস এপিআই ব্যবহার করার চেষ্টা করছি: https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more / । আমি নথি থেকে নিম্নলিখিত কোডটি অনুলিপি করেছি :

<script type="text/javascript">
  window.addEventListener('load', () => {
    document.getElementById('test-button').addEventListener('click', () => {
      document.hasStorageAccess().then(hasAccess => {
        console.log('hasAccess: ' + hasAccess);
        if (!hasAccess) {
          return document.requestStorageAccess();
        }
      }).then(_ => {
        console.log('Now we have first-party storage access!');
        document.cookie = "foo=bar";
        console.log(`document.cookie: ${document.cookie}`);
      }).catch(_ => {
        console.log('error');
      });
    });
  });
</script>

<button id="test-button">Test</button>

ব্রাউজার কনসোল আউটপুট:

[Log] hasAccess: true
[Log] Now we have first-party storage access!
[Log] document.cookie: 

আপনি দেখতে পাচ্ছেন, অনুদানটি সফল বলে মনে হচ্ছে তবে এখনও কুকি সেট করতে পারে না। কারও কি ধারণা আছে ভুল কি?

সাফারি সংস্করণ 13.0.1

সম্পাদনা: সাফারি 13.1 এ কনসোল আউটপুট:

[Log] hasAccess: false
[Log] error

দ্রষ্টব্য: এনক্লোজিং পৃষ্ঠাটি এই পৃষ্ঠার দিকে নির্দেশ করে একটি সহজ iframeট্যাগ src


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

সাফারি ১৩.১ এর সাথে অনুরোধটি প্রত্যাখ্যান করা হয়েছে তবে কেন তা বুঝতে পারিনি।
চন্দ্র

1
হ্যাঁ, এটা সত্যিই হতাশাব্যঞ্জক। বিটিডাব্লু সাফারি ১৩.১ একই আচরণ শুরু করে, মনে হয় অ্যাক্সেস দিচ্ছে তবে কুকি সেট করা ব্যর্থ হয়েছে।
চন্দ্র

হিসাবে এই নিবন্ধটি নির্দিষ্ট করে সেখানে অ্যাক্সেসের মঞ্জুরি দিন কিছু নিয়ম আছে। এবং, করা উচিত নয় console.log('Now we have first-party storage access!');আসা thenএর requestStorageAccess()?
সুপুন কাবিন্দ

@ সুপুনকভিন্দা প্রথম 3 টি বিধি এখানে প্রয়োগ হয় না। আমি বিধি 5 টি সম্পূর্ণরূপে বুঝতে পারি না Maybe সম্ভবত এটি অন্য কোনও প্রক্রিয়াটির উল্লেখ করছে যা ডোমেনটিকে কালো তালিকাভুক্ত করেছে। আমি মনে করি না এটিও প্রযোজ্য তবে আমি এর সাথে সম্পর্কিত কিনা তা দেখার জন্য কয়েকটি বিষয় চেষ্টা করব।
চন্দ্র

উত্তর:


3

টি এল; ডিআর

প্রথম পক্ষের প্রসঙ্গে ডোমেনের জন্য ইতিমধ্যে একটি কুকি সেট করা আছে তা নিশ্চিত করুন।


সেই কোডের নমুনাটি দেখার জন্য কয়েকটি জিনিস আছে। নিম্নলিখিতটি সাফারি ১৩.১-এ পরীক্ষা করা হয়েছিল দয়া করে নোট করুন।

ব্যবহারকারীর প্রম্পটের শর্তাদি এবং পরবর্তী অ্যাক্সেস মঞ্জুরি:

  1. document.requestStorageAccessব্যবহারকারীর ক্রিয়া হিসাবে চিহ্নিত হতে হবে be এমডিএন ডক্সে নথিবদ্ধ হওয়া সত্ত্বেও , document.hasStorageAccessব্যবহারকারী ক্রিয়াটি প্রচার করে বলে মনে হচ্ছে না।
  2. ব্যবহারকারীর অবশ্যই তৃতীয় পক্ষের সাথে ইতিমধ্যে একটি প্রথম পক্ষের প্রসঙ্গে ইন্ট্যারাক্ট করা উচিত। নথিতে যে কোনও ক্লিকই করবে।

কুকি লিখতে সক্ষম হওয়ার শর্তাদি:

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


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

@ লুনার আপনি ফলাফল ভাগ করতে পারেন?
সের্গে কোরজভ

@ এখানে আমার একই সমস্যা আছে। আইফ্রেমে আমরা কুকিগুলি সেট করতে পারি না এমন কোনও উপায় আছে কি?
মিকবিটিসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.