আমি খুঁজে পাচ্ছি যে যখনই আমি আমার সার্ভারে বার্নিশ পুনরায় চালু করি, আমি আমার ব্যবহারকারীদের জন্য আমার সেশনগুলি হারাচ্ছি।
এটি আমার গ্রাহকদের তাদের শপিং কার্টগুলি আলগা করে তুলবে।
ওয়ার্নিশের পক্ষে এই স্বাভাবিক আচরণ নাকি আমার ভিসিএলকে দোষ দেওয়া যায়? এটা মনে হয় যে এটি না
আরও তথ্য।
আরও তদন্তে, দেখা যাচ্ছে যে এই সমস্যাটি গিটহাবের # 725 ইস্যু সম্পর্কিত ।
আমার ম্যাজেন্টো ইনস্টলেশন সংস্করণটি 1.9.1.0। এটাও বলা উচিত যে আমার পুরো সম্মুখভাগটি https এর অধীনে চলছে। আমি এসএসএল বন্ধ করতে বার্নিশের সামনে পাউন্ড ব্যবহার করছি।
দেখা যাচ্ছে যে এই সংস্করণে ডিফল্ট ম্যাজেন্টো আচরণটি হ'ল এমআইটিএম আক্রমণগুলির বিরুদ্ধে পরীক্ষার প্রয়াসে একটি 'সেকেন্ডারি ফ্রন্টএন্ড কুকি' তৈরি করা হয়, সাধারণত 'ফ্রন্টএন্ড_সিড' নামে পরিচিত।
দেখে মনে হচ্ছে টার্পেনটাইন দ্বারা উত্পাদিত ভিসিএল ফাইলটি এই কুকিতে পাস করছে না, যা অবৈধ সেশনগুলির কারণ করছে।
কেউ কি ব্যাখ্যা করতে পারে যে ভিজিএল ফাইলটি কীভাবে ক্লায়েন্টকে দেওয়া কুকিগুলিতে পাস করে?
প্রয়োজনীয় কুকিজ তৈরি না করে এটি বার্নিশে সংকুচিত করেছি।
Magento 1.9.1.0 হিসাবে, এমআইটিএম আক্রমণগুলি ব্লক করতে একটি 'ফ্রন্টএন্ড_সিড' কুকি চালু করা হয়েছিল।
এটি Mage_Core_Model_Session_Abstract_Varien
ক্লাসে পাওয়া যাবে , 135 লাইনে
if (Mage::app()->getFrontController()->getRequest()->isSecure() && empty($cookieParams['secure'])) {
// secure cookie check to prevent MITM attack
$secureCookieName = $sessionName . '_cid';
if (isset($_SESSION[self::SECURE_COOKIE_CHECK_KEY])
&& $_SESSION[self::SECURE_COOKIE_CHECK_KEY] !== md5($cookie->get($secureCookieName))
) {
session_regenerate_id(false);
$sessionHosts = $this->getSessionHosts();
$currentCookieDomain = $cookie->getDomain();
foreach (array_keys($sessionHosts) as $host) {
// Delete cookies with the same name for parent domains
if (strpos($currentCookieDomain, $host) > 0) {
$cookie->delete($this->getSessionName(), null, $host);
}
}
$_SESSION = array();
}
if (!isset($_SESSION[self::SECURE_COOKIE_CHECK_KEY])) {
$checkId = Mage::helper('core')->getRandomString(16);
$cookie->set($secureCookieName, $checkId, null, null, null, true);
$_SESSION[self::SECURE_COOKIE_CHECK_KEY] = md5($checkId);
}
}
ক্লায়েন্টদের জন্য সুরক্ষিত সংযোগ দেওয়ার জন্য, বার্নিশকে একটি 'ফ্রন্টএন্ড' কুকি তৈরি করতে হবে, যা পরে ম্যাজেন্টো সেই নির্দিষ্ট গ্রাহককে সনাক্ত করতে ব্যবহার করবে। এখনও অবধি, এটি এটি ঠিক জরিমানা করে বলে মনে হচ্ছে। যাইহোক, এটি ম্যাজেন্টো ১.৯.১.০-এর মতো দেখায়, এখন এটি 'ফ্রন্টএন্ড_সিড' কুকি তৈরি করা দরকার।
বার্নিশকে এটি করতে হবে কারণ, প্রতিক্রিয়াটি ক্যাশে করে, এটি প্রতিক্রিয়া শিরোনামকেও ক্যাশে করে, যার মধ্যে রয়েছে 'ফ্রন্টএন্ড' কুকিজ।
অতএব, ডিফল্টরূপে, বার্নিশ 'লুকোচুরি' বা 'পাস' শর্তাদি পরিচালনা করার সময় ব্যাকএন্ডের প্রতিক্রিয়াযুক্ত কোনও কুকিজ দূরে সরিয়ে দেয়। এটি একই ক্যাশেড ফ্রন্টএন্ড কুকি দিয়ে একাধিক ব্যবহারকারীর ইস্যু করা বন্ধ করার জন্য এটি করে (এটি লোক সেশনগুলির সাথে আপস করবে)।
যে কোনও সময় বার্নিশ 'পাইপ' দিয়ে অনুরোধটি পরিচালনা করে, ম্যাজেন্টো প্রয়োজনীয় কুকিগুলি তৈরি করতে এবং তাদের ব্যবহারকারীর ব্রাউজারে সংযুক্ত করতে সক্ষম। এর ফলে সিস্টেম প্রাথমিক বৈধতা ব্যর্থ হয়, তবে তারপরে ব্যবহারকারীকে একটি নতুন অধিবেশন সরবরাহ করে। এই লক্ষণটি কার্টের ক্ষতি বা শপিং কার্টে পণ্য যুক্ত করতে অক্ষম হিসাবে প্রকাশ করে।
টার্পেনটাইন ভিসিএল কোনও অনুরোধ 'পাইপ' করবে যা ফাংশনটিতে এই কোড দ্বারা দেখা মেথড টাইপ জিইটি বা হেডের নয় vcl_recv
:
// We only deal with GET and HEAD by default
// we test this here instead of inside the url base regex section
// so we can disable caching for the entire site if needed
if (!true || req.http.Authorization ||
req.request !~ "^(GET|HEAD)$" ||
req.http.Cookie ~ "varnish_bypass=1") {
return (pipe);
}
সুতরাং, যখন ব্যবহারকারীরা তাদের কার্টে কোনও আইটেম যুক্ত করার চেষ্টা করে বা প্রথমবারের জন্য চেকআউট করার চেষ্টা করে তখন লক্ষণটি সবচেয়ে বেশি লক্ষণীয়।
কিভাবে ঠিক করবো?
আমি বিশ্বাস করি যে এই সমস্যাটির সমাধান হ'ল আগত দর্শকদের জন্য টার্পেনটাইন ভিসিএল একটি 'ফ্রন্টএন্ড_সিড' কুকি তৈরি করা এবং তারপেন্টাইন মডিউলটি সেই কুকিকে বর্তমান সেশনে যুক্ত করুন যেমন এটি এখন 'ফ্রন্ট্যান্ড্যান্ড' কুকির জন্য রয়েছে।
সুতরাং ... আমরা কীভাবে এটি বাস্তবায়ন করব?
কেভেট: আমি ভুল হতে পারি, আমি বার্নিশের জন্য খুব নতুন, তবে আমি এখন এটিতে প্রচুর ঘন্টা ব্যয় করেছি এবং এটি আমি যা দেখছি, এখনই যে কেউ সমর্থন করছেন তা প্রশংসিত হবে।
শেষ আপডেট এবং আমার চয়ন ফিক্স - 2015 10 30
বার্নিশে 'ফ্রন্টএন্ড_সিড' কুকি তৈরি করা অসম্ভব, কারণ কুকিটি সার্ভারে এলোমেলোভাবে ম্যাজেন্টো দ্বারা তৈরি করা হয়েছিল এবং গ্রাহক সেশনে MD5 হ্যাশ হিসাবে সঞ্চিত রয়েছে। এটি আপনাকে গ্রাহক সেশনের বাইরে বাহ্যিকভাবে তৈরি করা থেকে বিরত রাখে।
এই ইস্যুতে আমি যে সর্বোত্তম সমাধানটি নিয়ে এসেছি তা হ'ল ম্যাজেন্টো গ্রাহক সেশনগুলি যেভাবে পরিচালনা করে তা পরিবর্তিত করে দেওয়া।
বর্তমানে ম্যাজেন্টো এইভাবে অবৈধ সেশনগুলি পরিচালনা করে:
IF
The requested session by the customer is flagged as invalid
THEN
Stop processing request
Redirect to the appropriate page
আমার নতুন যুক্তিটি নিম্নরূপ:
IF
The requested session by the customer is flagged as invalid
THEN
Create a new session
Complete the requested task
Redirect to the appropriate page
আমার নতুন পদ্ধতির বর্ণনিত এমনকি গ্রাহকদের প্রতিক্রিয়া এমনকি প্রথম দর্শনে পরিচালনা করতে দেয়। যা টারপেনটাইনের সর্বশেষ বাস্তবায়ন কাজ করে না।
আমার ইস্যু, ইস্যু # 829 - / নেক্সেসি / ম্যাজেন্টো-টার্পেনটাইন / ইস্যু / 829 গিটহাবের উপর। আমার ভিসিএলের একটি অনুলিপি এখানে পাওয়া যাবে।
এখানে পাওয়া অনেক পুরনো সমস্যার সদৃশ হওয়ায় গিটহাবে আমার সমস্যাটি বন্ধ হয়ে গেছে: