লারাভেলে পোস্ট অনুরোধ - ত্রুটি - 419 দুঃখিত, আপনার সেশন / 419 আপনার পৃষ্ঠাটির মেয়াদ শেষ হয়ে গেছে


90

আমি লারাভেল 5.7 ইনস্টল করেছি

ফাইলটিতে একটি ফর্ম যুক্ত হয়েছে \resources\views\welcome.blade.php

<form method="POST" action="/foo" >
    @csrf
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

ফাইল যুক্ত করা হয়েছে \routes\web.php

Route::post('/foo', function () {
    echo 1;
    return;
});

একটি পোস্ট অনুরোধ প্রেরণের পরে:

419 দুঃখিত, আপনার সেশনটির মেয়াদ শেষ হয়ে গেছে। রিফ্রেশ করুন এবং আবার চেষ্টা করুন।

সংস্করণে এ 5.6জাতীয় কোনও সমস্যা ছিল না।


আপনি কি পুনর্নির্দেশ যুক্ত করার চেষ্টা করেছেন? পরিবর্তে return;আপনি কল করতে পারেন return redirect()->back();। আমি যা দেখতে পাচ্ছি তা থেকে অ্যাপ্লিকেশনটির পোস্টের অনুরোধের পরে কিছুই করার নেই। অনুরোধটি প্রক্রিয়া করার পরে আপনি এটি কোনও দর্শনে পুনর্নির্দেশ করতে পারেন।
dcangulo

4
আমি একই সমস্যা হচ্ছে। যখন আমি ডাটাবেসের অধিবেশন স্যুইচ এটি ঘটে এবং আমি ফিরে দেখতে পান fileজন্য SESSION_DRIVERমধ্যে .envএটি কাজ করে জরিমানা। ডাটাবেস ভিত্তিক সেশন কেন কাজ করছে না।
জুনেদ কাদির শেখাঞ্জাই

আমি আপনার সঠিক কোডটি একটি তাজা লারাভেল ৫.7 ইনস্টল এ অনুলিপি করেছি। এটা কাজ করেছে. অন্য কোথাও সমস্যা আছে।
কাইল ওয়ার্ডলে

টোকেন সমস্যার কারণে এই সমস্যা। আমি একই কোডটি চালানোর চেষ্টা করেছি, তবে কোনও ত্রুটি নেই। আপনার সেশন ড্রাইভার, ফর্মের মধ্যে টোকেন মান প্রদর্শন এর মতো আরও তথ্য দেওয়া উচিত। এছাড়াও, আপনি এই ফাইলটি vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.phpline 67 লাইনে নিজেকে ডিবাগ করতে পারেন তা জানতে
বাংলোকিয়া

4
আমি বুঝতে পারি যে আমি sessionsটেবিলটি অন্য কোনও উদ্দেশ্যে ব্যবহার করেছি। এই টেবিলের নামটিকে আরও উপযুক্ত একটিতে পরিবর্তন করার পরে এবং দৌড়ে এসে artisan session:tableরিফ্রেশ হওয়া মাইগ্রেশন সবকিছু ঠিকঠাক চলছে
জুনায়েদ কাদির শেখানজাই

উত্তর:


123

নীচে পড়ার আগে নিশ্চিত হয়ে নিন যে আপনার কাছে @csrfবা {{ csrf_field() }}আপনার মতো ফর্মটিতে রয়েছে

<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>

অধিবেশনটির মেয়াদ উত্তীর্ণ বা 419 পৃষ্ঠার মেয়াদোত্তীর্ণ ত্রুটির বার্তাটি লারভেলে আসে কারণ কোথাও আপনার সিএসআরএফ টোকেন যাচাইকরণ ব্যর্থ হয় যার অর্থ মিডওয়্যার App\Http\Middleware\VerifyCsrfToken::classইতিমধ্যে চালু আছে। ফর্মের মধ্যে @csrfইতিমধ্যে ব্লেড নির্দেশিকা যুক্ত করা হয়েছে, যা ভালও হওয়া উচিত।

তারপরে অন্যান্য ক্ষেত্রটিটি হ'ল সেশন। csrfটোকেন যাচাইকরণ সরাসরি আপনার সেশন সঙ্গে জড়িত করা হয়েছে আপনি আপনার সেশন ড্রাইভার বা এই ধরনের ভুলভাবে কনফিগার Redis হিসেবে কাজ করা হয় না একটি সমস্যার কারণ হতে পারে কিনা তা যাচাই করতে চাইতে পারেন তাই।

হতে পারে আপনি নিজের .envফাইল থেকে আপনার সেশন ড্রাইভার / সফ্টওয়্যার পরিবর্তন করার চেষ্টা করতে পারেন , সমর্থিত ড্রাইভারগুলি নীচে দেওয়া হয়েছে

লারাভেল 5, লারাভেল 6 এবং লারাভেল 7 (ডক লিঙ্ক) এ সমর্থিত সেশন ড্রাইভারগুলি

  • file - সেশনগুলি স্টোরেজ / ফ্রেমওয়ার্ক / সেশনে সংরক্ষণ করা হয়।
  • cookie - সেশনগুলি সুরক্ষিত, এনক্রিপ্ট করা কুকিগুলিতে সংরক্ষিত থাকে।
  • database - সেশনগুলি একটি সম্পর্কিত ডেটাবেজে সংরক্ষণ করা হয়।
  • memcached/ redis- সেশনগুলি এই দ্রুত, ক্যাশে ভিত্তিক স্টোরগুলির একটিতে সঞ্চিত থাকে।
  • array - সেশনগুলি পিএইচপি অ্যারেতে সংরক্ষণ করা হয় এবং তা স্থির থাকবে না।

যদি আপনার ফর্মটি সেশন ড্রাইভারটি স্যুইচ করার পরে কাজ করে, তবে সেই নির্দিষ্ট ড্রাইভারটির সাথে কিছু ভুল রয়েছে, সেখান থেকে ত্রুটিটি ঠিক করার চেষ্টা করুন।

সম্ভাব্য ত্রুটি-প্রবণ পরিস্থিতিতে

  • সম্ভবত ডিরেক্টরি-ভিত্তিক অনুমতি সংক্রান্ত সমস্যার কারণে ফাইল-ভিত্তিক সেশনগুলি কাজ করতে পারে না /storage(একটি দ্রুত গুগলিং আপনাকে সমাধান আনবে), এছাড়াও মনে রাখবেন যে ডিরেক্টরিটির জন্য 7777 লাগানো কখনই সমাধান নয়।

  • ডাটাবেস ড্রাইভারের ক্ষেত্রে, আপনার ডিবি সংযোগটি ভুল হতে পারে, বা sessionsটেবিলটি উপস্থিত থাকতে পারে না বা ভুলভাবে কনফিগার করা হয়েছে (ভুল কনফিগারেশন অংশটি @ জুনাইদ কাদিরের মন্তব্য অনুসারে একটি সমস্যা হিসাবে নিশ্চিত হয়েছে)।

  • redis/memcached কনফিগারেশনটি ভুল বা একই সময়ে সিস্টেমে কোডের অন্য কোনও অংশ দ্বারা ম্যানিপুলেট করা হচ্ছে।

এটি কার্যকর করতে php artisan key:generateএবং একটি নতুন অ্যাপ্লিকেশন কী উত্পন্ন করা ভাল ধারণা হতে পারে যা পরিবর্তে সেশনের ডেটা ফ্লাশ করবে।

সাফ ব্রাউজার ক্যাশে হার্ড , আমি ক্রোম এবং ফায়ারফক্সকে অপরাধী হিসাবে আমি মনে করতে পারি তার চেয়ে বেশি পেয়েছি।

অ্যাপ্লিকেশন কীগুলি গুরুত্বপূর্ণ তা সম্পর্কে আরও পড়ুন


4
কখনও কখনও এটি কেবল সেই ব্রাউজারগুলিই হয়, মূলত ক্রোম সেট-কুকি সেশন মান রাখবে না কারণ এটি ত্রুটিযুক্ত বা অ-মানক। সুতরাং লারাভেল এইচটিটিপি অনুরোধ _tokenথেকে ফরমে প্রাপ্ত প্রাপ্ত মানের সাথে তুলনা করার জন্য কোনও বিদ্যমান সেশন মান খুঁজে পাবে না । SESSION_DOMAIN=...আইপি ব্যবহার করা থেকে বিরত থাকুন যা ক্রোম এবং এইচটিটিপি কুকি স্পেসগুলি অনিরাপদ হিসাবে বিবেচনা করে।
কিটেলডগ

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

@ TheAngelM97 লগইন অথবা রেজিস্টার পৃষ্ঠাতে গিয়ে আপনি সহজেই এই ত্রুটিটি পুনরুত্পাদন করতে পারেন। 30 মিনিটেরও বেশি সময় ধরে কিছু করবেন না। তারপরে আপনি যখন সাবমিট এ ক্লিক করবেন তখন 419 Page Expiredশো আপ হবে। ব্যবহারের স্বার্থে, আপনি কীভাবে একটি সহজ ব্যবহারকারীকে বলতে পারেন যে সবেমাত্র কী ঘটেছে এবং কীভাবে এটি সমাধান করবেন?
পাঠ্রস

38

কারণ ফর্মটির জন্য সিএসআরএফ প্রয়োজন। ৫. 5. সংস্করণে তারা এটিকে @ সিএসআরএফ এ পরিবর্তন করেছে

<form action="" method="post">
    @csrf
    ...

রেফার্ন: https://laravel.com/docs/5.7/csrf


6
তার ফর্মটিতে একটি সিএসআরএফ টোকেন অন্তর্ভুক্ত রয়েছে। নিশ্চিত না যে তিনি পরে এটি সম্পাদনা করেছিলেন কিনা।
রিসোর্সআইঙ্ক

হ্যাঁ, তার ফর্মটির মূলত একটি csrfক্ষেত্র রয়েছে, আমি কেবল সম্পাদনার ইতিহাসে
নজর রেখেছি

এটি আমার ক্ষেত্রেও সমস্যাটি সমাধান হয় না, যেমন আমি সবসময় আমার ফর্মটিতে থাকি তবে অন্য কিছু পরিবর্তনের কারণে ত্রুটির মুখোমুখি হতে শুরু করি
সামি

14

কেস 1: আপনি যদি 127.0.01: 8000 এর মতো আপনার স্থানীয় সিস্টেমে প্রকল্প চালাচ্ছেন,

তারপর

যোগ SESSION_DOMAIN=আপনার .env ফাইলে

বা আপনার কনফিগারেশন / সেশন.এফপি 'domain' => env('SESSION_DOMAIN', ''),

এবং তারপর চালান php artisan cache:clear

কেস 2: যদি প্রকল্পটি সার্ভারে চলছে এবং আপনার কাছে "mydomain.com" এর মতো ডোমেন রয়েছে

যোগ SESSION_DOMAIN=mydomain.comআপনার .env ফাইলে

বা আপনার কনফিগারেশন / সেশন.এফপি 'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

এবং তারপর চালান php artisan cache:clear


9

কিভাবে ব্যবহার সম্পর্কে

{{ csrf_field() }} পরিবর্তে @csrf

419 ত্রুটিটি বেশিরভাগ ক্ষেত্রে সিএসআরএফ টোকেন ইস্যুগুলির কারণে।


মানে {{ csrf_field() }}?
ট্র্যাভিস ব্রিটজ

@ সিএসআরএফ যেমন একই ফলাফল করে তেমনই এটি এইচটিএমএল তৈরি করে
সামি

9

আমি লারাভেল ৫. use ব্যবহার করি আমার একই সমস্যা ছিল এবং এটি কারণ সিএসআরএফ টোকেন ফর্মটিতে ছিল না, তাই যুক্ত করা হচ্ছে

@csrf

সমস্যা সমাধান


8

মন্তব্য করার চেষ্টা করুন \App\Http\Middleware\EncryptCookies::classমধ্যে \app\Http\Kernel.php আমি একই সমস্যা আছে এবং এমনটি করে এটা সমাধান। সম্ভবত সেরা সমাধান নয় কারণ সুরক্ষা কিন্তু অন্তত এটি কাজ করেছিল।

আগে আমি চেষ্টা করেছি:

  • ক্যাশে সাফ করুন
  • নতুন অ্যাপ্লিকেশন কী তৈরি করুন
  • বিভিন্ন ব্রাউজারে আমার অ্যাপ্লিকেশন চালান (ক্রোম 70, মজিলা ফায়ারফক্স 57 এবং আইই 11)
  • অন্য একটি কম্পিউটারে আমার অ্যাপ্লিকেশন চালান
  • আউট মন্তব্য \App\Http\Middleware\VerifyCsrfToken::classমধ্যে\app\Http\Kernel.php
  • আউট মন্তব্য \Illuminate\Session\Middleware\AuthenticateSession::classমধ্যে\app\Http\Kernel.php
  • লারাভেলকে আপগ্রেড এবং ডাউনগ্রেড করুন (5.6 থেকে 5.7 এর মধ্যে)

তবে উপরোক্তগুলির কোনওটিই আমার পক্ষে কাজ করেনি।

সম্পাদনা

আমার কেসটি প্রতিবার আমি লগইন করার সময়, একটি নতুন সেশন ফাইল তৈরি করা হবে (পুরানোটি এখনও অব্যাহত রয়েছে, তবে হঠাৎ ভুলে গিয়েছে Check চেক করুন storage/framework/sessions) এবং নতুন সিএসআরএফ টোকেন উত্পন্ন হয়েছে। সুতরাং সমস্যাটি ভেরিফাইক্রফটোকেনের নয়।

@ ভ্ল্যাড যেমন মন্তব্য বিভাগে উল্লেখ করেছেন, আপনার কখনও মন্তব্য করা উচিত নয়\App\Http\Middleware\VerifyCsrfToken::class । আপনাকে সার্ভারে সঠিক সিএসআরএফ টোকেন প্রেরণ করা হয়েছে তা পরীক্ষা করে দেখতে হবে।


4
আপনার উল্লিখিত উপায়গুলির মধ্যে কেবলমাত্র \ অ্যাপ \ এইচটিটিপি \ মিডলওয়্যার \ ভেরিফাইসিএসআরফটোকেন :: শ্রেণিতে \ অ্যাপ \ এইচটিটিপি \ কার্নেল.এফপি আমার পক্ষে কাজ করেছে।
লেক্স সফট

4
ক্যাশে সাফ করুন, নতুন অ্যাপ্লিকেশন কী উত্পন্ন করুন + কুকিজ সরান
dobs

আপনি কখনই অ্যাপ্লিকেশন \ এইচটিটিপি \ মিডলওয়্যার \ ভেরিফাইসিএসআরফ টোকেন :: শ্রেণীর কাজ করতে পারবেন না। তুমি ওটা কেন করবে? অ্যাপ্লিকেশন আপনার স্ব দুর্বল পয়েন্ট তৈরি করতে?
ভ্ল্যাড

@ ডবস '+ কুকিজ সরান' যোগ করার জন্য ধন্যবাদ কারণ আমি যতটা সম্ভব সম্ভব করার পরেও আমি 419 ত্রুটি পেয়েছিলাম এবং যখন আমি ব্রাউজারের কুকিজ সাফ করে / ছদ্মবেশে চেষ্টা করেছিলাম তখনই এটি কাজ করে।
নিরাজ পান্ডে

6

আপনার @csrfস্বাগত.ব্লেড.এফপি এ পরিবর্তন করুন<input type="hidden" name="_token" value="{{ csrf_token() }}">

সুতরাং আপনার কোড এর মত:

<form method="POST" action="/foo" >
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>

   <button type="submit">Submit</button>
</form>

6

এটি আপনার সেশনে সমস্যা হতে পারে। এই সেটিংসটি নিয়ে ঘুরে দেখার পরে আমি আমার সমস্যার সমাধান করেছি। আমার জন্য এটি শেষ বিকল্প হিসাবে পরিণত হয়েছে।

  • আপনি যদি "ফাইল" ব্যবহার করছেন সেশন চালক স্টোরেজ / ফ্রেমওয়ার্ক / সেশনগুলির দিকে নজর রাখেন যদি সেশনগুলি রিফ্রেশের পরে সংরক্ষণ করা হয়। যদি না হয় তবে এটি সম্ভবত ভুল ফোল্ডারের অনুমতিগুলির কারণে। আপনার স্টোরেজ / ফোল্ডারে সঠিক সঠিক আছে কিনা তা পরীক্ষা করে দেখুন
  • আপনার পৃষ্ঠাগুলিতে সমস্ত জাভাস্ক্রিপ্ট অক্ষম করার চেষ্টা করুন (হয় এটি নেভিগেটরের মাধ্যমে অক্ষম করে বা কোডের অভ্যন্তরে) এবং নিশ্চিত করুন যে 'http_only' => সত্য,
  • Https এর সাথে এবং ছাড়া ব্যবহার করার চেষ্টা করুন
  • নিশ্চিত করুন যে SESSION_DRIVER ভেরিয়েবলটি নাল নয়
  • 'এনক্রিপ্ট' => মিথ্যা এবং 'এনক্রিপ্ট' => সত্যের মধ্যে স্যুইচ করার চেষ্টা করুন
  • কুকির নাম 'কুকি' => 'ল্যারাভ্যালেসিওন' পরিবর্তন করার চেষ্টা করুন,
  • আপনার সত্যিকারের ডোমেনে OR নালায় আপনার SESSION_DOMAIN সেট করার জন্য চেষ্টা করুন
  • 'সুরক্ষিত' => এনভ ('SESSION_SECURE_COOKIE', মিথ্যা) এবং 'সুরক্ষিত' => এনভির ('SESSION_SECURE_COOKIE', সত্য) এর মধ্যে স্যুইচ করার চেষ্টা করুন,

উত্স: লারাভেল সেশন সর্বদা প্রতিটি রিফ্রেশ / অনুরোধকে লারাভেল 5.4 এ পরিবর্তন করে


হ্যাঁ, আরও অনেকগুলি জিনিস চেষ্টা করার পরে, SESSION_SECURE_COOKIEস্যুইচটি (এটিতে এটি পরিবর্তন করে false) আমার জন্য করেছিল। (চালু localhost:8000)
মার্টেন কোয়েটিসিয়র

SESSION_SECURE_COOKIE আমার জন্যও সমস্যা ছিল, ওয়েবসাইট অপ্টিমাইজেশনের জন্য গাইড অনুসরণ করার সময় আমি এটিকে পরিবর্তন করেছি।
ব্রাম জানসেন

আমার জন্য এটি https এর সাথে কাজ করে তবে HTTP দিয়ে নয় ... কোনও ধারণা কেন? দুর্দান্ত উত্তরের জন্য ধন্যবাদ, এটি খুঁজে পেতে আমাকে কয়েক ঘন্টা সময় নিয়েছে।
শার্কিনির্জি

5

এই ত্রুটিটি সমাধান করার জন্য আপনাকে প্রথমে নীচের একটি কমান্ডটি ফর্ম ট্যাগের মধ্যে প্রবেশ করতে হবে।

@csrf বা {{ csrf_field }}

যদি আপনার সমস্যার সমাধান না হয় তবে নিম্নলিখিতগুলি করুন: (দ্রষ্টব্য যে উপরের কমান্ডগুলির মধ্যে একটি ফর্ম ট্যাগের মধ্যে থাকতে হবে)

1. ফর্ম ট্যাগ @csrfOR এর মধ্যে নিম্নলিখিত কমান্ডগুলির মধ্যে একটি প্রবেশ করান {{ csrf_field }}

2. .env ফাইলটি খুলুন এবং SESSION_DRIVER বিভাগের মানগুলিকে "ফাইল" এ পরিবর্তন করুন।

3. তারপরে আপনার লারাভেল ক্যাশে পুনরায় সেট করা উচিত। টার্মিনালে কমান্ড লিখুন

php artisan view:clear php artisan route:clear php artisan cache:clear

php artisan config:cache

৪. চূড়ান্ত পদক্ষেপে, প্রকল্পটি পরিবেশন থেকে আনপ্লাগ করুন এবং পিএইচপি কারিগর পরিবেশনে আবার ক্লিক করুন

আমি আশা করি আপনার সমস্যার সমাধান হয়ে গেছে


4

csrf টোকেন যোগ করুন এবং আপনার সমস্যা সমাধান করা হবে। {s csrf_token}} বা @csrf


3

অনেক সময় পরে আমি এটি এইভাবে সমাধান করেছি

আমার লারাভেল ইনস্টলেশন পথটি কনফিগারেশন ফাইল সেশন.পিপিতে সেট করা সমান ছিল না

'domain' => env('SESSION_DOMAIN', 'example.com'),

2

এটি ওভারকিল হতে পারে তবে আপনি এটি চেষ্টা করতে পারেন:

// লুকানো টোকেন ক্ষেত্রের সাথে ফর্ম কলিং নামক রুট যুক্ত হয়েছে।

<form method="POST" action="{{ route('foo') }}" >
    @csrf
    <input type="hidden" name="_token" value="{!! csrf_token() !!}">
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

// নামযুক্ত রুট

Route::post('/foo', function () {
    return 'bar';
})->name('foo');

// এটি <head></head>ব্লকের মধ্যে যুক্ত করুন :

<meta name="_token" content="{!! csrf_token() !!}" />

আমি লারভেল ৫.7-তে হোমস্টেড ব্যবহার করে এটি স্থানীয়ভাবে পরীক্ষা করেছিলাম যা লারাভেল ইনস্টলার ২.০.১ ব্যবহার করে তাজা ইনস্টল করা হয়েছিল এবং এটি কাজ করেছে। আপনার পরিবেশ কি?

তত্ত্ব: আমি ভাবছি যে যদি সঙ্গে ফলক রেন্ডারিং HTML ট্যাগ কি কিছু আছে {{ }}বনাম {!! !!}আপনার পরিবেশ বা কিভাবে আপনি এটি করছে (যেমন। php artisan serve)। কি করে তোলে আমার মনে হয় line 335এর /vendor/laravel/framework/src/illuminate/Foundation/helpers.phpএকই লাইনে নিজে উপরে টাইপ করা রেন্ডার করা উচিত নয়।


হ্যাঁ দুর্দান্ত, তবে <meta>ট্যাগগুলির মধ্যে থাকা উচিত <head>, এর মধ্যে নয় <body>। আমি নিশ্চিত না এইচটিএমএল যাচাইকারী এটি পছন্দ করবে।
এমিক্স

আমি বলব যে আপনি সঠিক এবং এটি মাথায় সরানো উচিত।
jeremykenedy

2

কোডটিতে কোনও সমস্যা নেই। আপনি নতুন ইনস্টলেশন সাথে যেমন লিখেছেন তেমন কোডটি আমি পরীক্ষা করেছি।

ফর্ম কোড:

<form method="POST" action="/foo" >
    @csrf
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

web.php ফাইল কোড:

Route::get('/', function () {
    return view('welcome');
});

Route::post('/foo', function () {
    echo 1;
    return;
});

ফর্ম জমা দেওয়ার পরে ফলাফল: ফর্ম জমা দেওয়ার পরে আউটপুট

আপনি যদি নিজের ব্রাউজারের ক্যাশে সাফ করেন বা অন্য ব্রাউজার দিয়ে চেষ্টা করেন তবে আমার মনে হয় এটি ঠিক হয়ে যাবে।


2

দ্রুত বাজে দৃষ্টিভঙ্গি হ'ল অ্যাপ্লিকেশন \ http \ মিডলওয়্যার \ ভেরিফ্রিসক্রফটোকেন.পিপি যান এবং তালিকাটি বাদে route এ রুট যুক্ত করুন। পোস্টের অনুরোধটি সিএসআরএফ টোকেন যাচাইয়ের জন্য উপেক্ষা করা হবে।

protected $except = [
    //
    'doLogin.aspx',
    'create_coupon',
];

2

419 | পৃষ্ঠাটি এই ত্রুটিটির অর্থ লারাভেল সুরক্ষা ইস্যু এর অর্থ সিএসআরএফ টোকেন ক্ষেত্রটি সঠিকভাবে ব্যবহৃত হয়নি।

ব্যবহার করুন {{csrf_field}} এবং আপনার সমস্যা সমাধান করা হবে।


2

আপনি যদি এই সমস্ত পদক্ষেপের চেষ্টা করেন তবে এটি কাজ করা উচিত:

  1. আপনার সেশনটি ঠিকঠাকভাবে কনফিগার করা আছে কিনা তা নিশ্চিত করুন, সহজতম উপায় হ'ল ফাইলটি তৈরি করা এবং স্টোরেজ ফোল্ডারে chmod 755 এর অনুমতি রয়েছে তা নিশ্চিত করে নিন আপনার .envনীচের মত সেট করুন, ফাইল সেশন ড্রাইভার সেট করা সহজতম উপায়।

    SESSION_DRIVER=file
    SESSION_DOMAIN=
    SESSION_SECURE_COOKIE=false
    
  2. নিশ্চিত করুন ক্যাশে ফোল্ডারটি সাফ এবং লিখনযোগ্য, আপনি কারিগর কমান্ডের নীচে চালিয়ে এটি করতে পারেন।

    php artisan cache:clear
    
  3. নিশ্চিত করুন যে ফোল্ডারের অনুমতিগুলি ঠিকঠাক রয়েছে, সেগুলি নীচের মত কনফিগার করা উচিত:

    sudo chmod -R 755 storage
    sudo chmod -R 755 vendor
    sudo chmod -R 644 bootstrap/cache
    
  4. আপনার ফর্ম @csrfটোকেন অন্তর্ভুক্ত আছে তা নিশ্চিত করুন ।

এই আপনার সমস্যার সমাধান হবে আশা করি।


অনুমতিগুলির সুডো সেটিংটি আমার ল্যারাভেলটিকে পুরোপুরি ক্র্যাশ করেছে।
ভ্লাদিমির দেশপোটোভিচ

2

কনফিগারেশন / সেশন.এফপিতে যান

সারিটি সন্ধান করুন

'secure' => env('SESSION_SECURE_COOKIE', true),

এটি মিথ্যা পরিবর্তন

'secure' => env('SESSION_SECURE_COOKIE', false),

যদি এই পরামিতিটি সত্য ব্রাউজারে সেট করা থাকে তবে আপনাকে এইচটিটিপিএস প্রোটোকল ব্যবহার করতে হবে, অন্যথায় এটি সেশনটি সংরক্ষণ করবে না। যেমনটি বৈধ নয়


1

আপনার Http/Kernel.php

এই লাইন মন্তব্য করার চেষ্টা করুন:

\Illuminate\Session\Middleware\AuthenticateSession::class,

আপনার ওয়েব মিডলওয়্যার অ্যারে

এটি আপনার সমস্যার মূল হতে পারে


1

ডিফল্ট আমি এই সমস্যা ছিল না। সুতরাং আমি যা করেছি তা হ'ল chmod -R 644 sessions সমস্যাটি প্রতিলিপি করা।

এখানে চিত্র বর্ণনা লিখুন

এরপরে আমি সেশন ফোল্ডারে দ্বারা অনুমতিগুলি দিয়েছি chmod -R 755 sessions

এখন আমার প্রকল্প কোড আবার কাজ করে।

এখানে চিত্র বর্ণনা লিখুন

এটি হওয়ার কারণ আপনি নিজের ক্যাশে লেখার অনুমতিের অভাব সহ ফাইলটিতে সঞ্চয় করেন store

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

সমাধান:

1 - আমি উপরে ঠিক করেছি আপনি সেশন ফোল্ডারে 755 অনুমতি দিতে পারেন। 2 - আপনি অন্য সেশন ড্রাইভার কনফিগারেশন ব্যবহার করতে পারেন।

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

মনে রেখ; আপনি যদি মেমচেড / রেডিস ব্যবহার করতে চান তবে আপনার সেগুলি আপনার সার্ভারে ইনস্টল করা দরকার বা আপনার ডকার রেডিস কনটেইনারটি চলমান থাকতে হবে।


1

আসলে সিএসআরএফ হ'ল একটি সেশন ভিত্তিক টোকেন। কোনও রুট গোষ্ঠীতে আপনার রুট যুক্ত করুন এবং একটি মিডওয়্যার যুক্ত করুন যা সেশনগুলি নিয়ন্ত্রণ করে।

ওয়েব লারাভেলের একটি ডিফল্ট মিডলওয়্যার এবং এটি সেশন অনুরোধগুলি নিয়ন্ত্রণ করতে পারে।

Route::group(array('middleware' => ['web']), function () {
  Route::post('/foo', function () {
     echo 1;
     return;
  });
});

1

আপনার যদি ইতিমধ্যে সিএসআরএফ নির্দেশিকা থাকে তবে আপনি সেশনগুলি চালনার উপায়টি পরিবর্তন করতে পারেন।

ইন config/session.php, 'সুরক্ষিত' পরীক্ষা করুন ক্ষেত্রটি । আপনার সার্ভারে https উপলব্ধ না হলে এটি মিথ্যা হওয়া উচিত।

আপনি SESSION_SECURE_COOKIE=FALSEনিজের .envফাইল (রুট ডিরেক্টরি) রাখতে পারেন।


1

আপনার প্রকল্পের ওপেন কমান্ড লাইনটি সিএমডি করুন।

1.com মন্ড

php artisan config:cache

2 কমন্ড

php artisan route:clear

1

আপনার অ্যাপ্লিকেশনের শিরোনামেও কি সিএসআরএফ আছে?

<meta name="csrf-token" content="{{ csrf_token() }}">

1

ফর্মটি থাকা অবস্থায় @csrfএটি এখনও প্রদর্শিত হয়419 pages has expired

SESSION_SECURE_COOKIEকনফিগারেশন / সেশন.এফপি-তে আপডেট অপশন হওয়ার পরে আমি এটি সমাধান করেছি

'secure' => env('SESSION_SECURE_COOKIE', false)

পরিষ্কার ক্যাশে চেয়ে


1

আমি কেবল এটি জুড়েছিলাম এবং আমি এখানে উত্তরের জন্য ঘুরে বেড়াচ্ছি .. আমার ক্ষেত্রে সমাধানটি ছিল ব্রাউজারের ইতিহাস সাফ করা।


1

আমার ক্ষেত্রে রুটস.এফপি শেষে একটি?> ছিল। সেখানে অনেক সময় ব্যয় করেছেন ...


4
একই, আমি ?>শেষের দিকে যোগ করতে ভুলে গেছিweb.php
মিসালিহবিন্দক

4
কি দারুন. না ঠিক আমার ক্ষেত্রে একই সমস্যা, কিন্তু আপনার সমাধান আমার এই পরীক্ষা প্রণীত, এবং যখন আমি করেছিলাম, আমি হোয়াইটস্পেস খেয়াল আগে উদ্বোধনী <?php ট্যাগ, এবং যে কি সাইটে যে ফর্মে একটি 419 ঘটাচ্ছে ছিল! অদ্ভুতভাবে, এটি পিএইচপি 7.3 এর সাথে ঘটেনি, এবং 7.4 এ আপগ্রেড করার পরে শুরু হয়েছিল!
বেন জনসন

0

আমার ঠিক ঠিক একই সমস্যা ছিল এবং এটি সম্পূর্ণ বোকা হওয়ার বিষয়টি আমার কাছে ছিল। আমি ফর্ম জমা দেওয়ার আগে জাভাস্ক্রিপ্টের মাধ্যমে ফর্ম ক্ষেত্রগুলি (কেবলমাত্র জমা দেওয়ার বোতামের চেয়ে বেশি) অক্ষম করে দিয়েছিলাম! এটি অবশ্যই ফর্মের সমস্ত উপাদান জমা দেওয়া হয়নি (গোপন সহ)_token ক্ষেত্র ) যা 419 ত্রুটিটি উপস্থিত করেছিল!

আমি আশা করি এটি কয়েক ঘন্টা মাথা স্ক্র্যাচিং থেকে কাউকে সহায়তা করে!

অক্ষম ফর্ম ইনপুটগুলি অনুরোধটিতে উপস্থিত হয় না


0

আমি এই সমস্যাটি অনেক আগে পেয়েছি। আমি মনে করি এটি এর অনুমতি দেয় storage/framework/sessions। আপনি chmod -R 0777 storage/framework/sessionsকমান্ড দ্বারা এটি পরিবর্তন করতে পারেন । এটা আমার জন্য কাজ করেছে।


0

আমার ক্ষেত্রে এটি খুব হাস্যকর। আমি Auth::routes()রুট ফাইলের শীর্ষে রেখে দিলে আমি ত্রুটি পেয়েছি 41

Auth::routes();

Route::middleware('auth')->group(function () {
    Route::get('/', 'DashboardController@index')->name('dashboard');
});

এবং আমি Auth::routes();রুট ফাইলের নীচে গিয়ে ত্রুটিটি ঠিক করেছি ।

Route::middleware('auth')->group(function () {
    Route::get('/', 'DashboardController@index')->name('dashboard');
});

Auth::routes();

হতে পারে এটি আপনার ক্ষেত্রেও সহায়তা করতে পারে। শুভকামনা।


0

আপনি যদি পোস্ট ফাইলের আকারের সীমা অতিক্রম করে এমন একটি বড় ফাইল আপলোড করার চেষ্টা করছেন তবে আপনি ত্রুটিটি 419 পেয়েছেন দয়া করে নোট করুন। এক্ষেত্রে আপনি আপলোড_ম্যাক্স_ফাইলসাইজ এবং পোস্ট_ম্যাক্স_সাইজ উভয়ই যুক্তিসঙ্গত পরিমাণে বাড়িয়ে নিতে পারেন (উদাহরণস্বরূপ 10 এম বা 20 এম আপনার ব্যবহারের ক্ষেত্রে এবং সংস্থানসমূহের উপর নির্ভর করে), এখানে যাচাই করুন: https://stackoverflow.com/a/2184541/2100489

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

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