نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • سیستم عامل
  • نحوه پیدا کردن و غلبه بر BOM یک اشتباه بد در وردپرس است. حل مشکل "نمی توان اطلاعات هدر را اضافه کرد - سرصفحه ها قبلا ارسال شده اند" هدرهای اطلاعات زشت

نحوه پیدا کردن و غلبه بر BOM یک اشتباه بد در وردپرس است. حل مشکل "نمی توان اطلاعات هدر را اضافه کرد - سرصفحه ها قبلا ارسال شده اند" هدرهای اطلاعات زشت

این خطا به راحتی قابل رفع است.
اغلب همان پیام در ابتدای جلسات ظاهر می شود، با عبارت کمی متفاوت:
هشدار: کوکی جلسه ارسال نمی شود - سرصفحه ها قبلا ارسال شده اند
هشدار: محدود کننده کش جلسه ارسال نمی شود - سرصفحه ها قبلا ارسال شده اند

علامت سفارش بایت
گاهی اوقات شما همه چیز را بررسی کرده اید - هیچ جایی وجود ندارد. ویرایشگر را تغییر دهید فایل خود را در برنامه دیگری مشاهده کنید. به عنوان مثال، Notepad ویندوز هنگام استفاده از رمزگذاری یونیکد، بدون اطلاع شما، کاراکتر سرویس Byte Order Mark را به ابتدای فایل شما اضافه می کند. اسکریپت را در ویرایشگر دیگری باز کنید و کاراکترهای اضافی را حذف کنید. و Notepad را به ویرایشگر دیگری تغییر دهید.
یا در رمزگذاری UTF-8 بدون BOM ذخیره کنید

سوالات متعددی که در انجمن وجود دارد مرا به انجام اینجا وادار می کند یادداشت مهم:
این خطا ظاهر نمی شود زیرا شما "چیزی نوشته شده در بالا" در اسکریپت خود دارید. و از این واقعیت که PHP چیزی را در مرورگر نمایش می دهد. لازم نیست کد باشد. میتونه باشه پیغام خطا. می تواند یک فاصله یا یک تگ html باشد. بله بله. برای با استعدادترین ها: ما در مورد هر شخصیتی که به مرورگر ارسال می شود صحبت می کنیم، نه فقط آن هایی که مرورگر به کاربر بی تجربه نشان می دهد. صفحات HTML دارای کد منبع هستند. و این اوست که نتیجه اسکریپت PHP است، نه حروف زیبا با عکس، همانطور که تعداد بسیار زیادی از مردم فکر می کنند.

شگفت آور است که چگونه یک اشتباه کوچک می تواند سایت وردپرس شما را به طور کامل از بین ببرد. البته ما در مورد هشدار خطای شناخته شده وردپرس صحبت می کنیم. هشدار: نمی توان اطلاعات هدر را تغییر داد - سرصفحه ها قبلاً توسط pluggable.php ارسال شده اند. اگر شما یکی از کسانی هستید که با این خطا مواجه شده اید، پس به جای درستی آمده اید. در این ابتدا به بررسی دلیل بروز این خطا می پردازیم و راه حل هایی را بررسی می کنیم که در نهایت مشکل را حل می کنند.

آنچه مورد نیاز خواهد بود

قبل از شروع، مطمئن شوید که موارد زیر را دارید:

  • دسترسی به کنترل پنل هاست یا دسترسی FTP

چگونه نمی توان اطلاعات هدر را تغییر داد - سرصفحه هایی که قبلاً با خطا ارسال شده اند

برای درک بهتر دلایل، به مثالی از این خطا نگاه می کنیم. خطا معمولاً به این شکل ظاهر می شود:

هشدار: نمی‌توان اطلاعات هدر را تغییر داد - سرصفحه‌هایی که قبلاً توسط (خروجی در /public_html/wp-content/plugins/my-plugin/my-function.php:#) در /public_html/wp-includes/pluggable.php در خط # شروع شده است، ارسال شده است.

همانطور که مشاهده می کنید، خطا به دو فایل اشاره می کند. فایل اول (در مورد ما: my-function.phpمستقر در /public_html//wp-content/plugins/my-plugin/) در رأس مظنونین. این کد سفارشی ما است که برای تغییر عملکرد اصلی ارائه شده توسط وردپرس در نظر گرفته شده است. عملکرد هسته در فایل موجود است pluggable.php(فایل اصلی وردپرس، بدون تغییر برای نصب وردپرس). به عبارت دیگر مشکل در فایل اول است که مانع از اجرای صحیح فایل دوم می شود.

دلیل اصلی خطا، اضافی است فاصله در فایل اول. این فضاها در بالا یا پایین فایل، فضاهای غیر ضروری در هر جایی از فایل یا حتی فضاهای تگ های PHP هستند. . به هر حال، با توجه به این واقعیت که برنامه نویسان می توانند (و معمولا انجام می دهند) به اشتباه فضاهای اضافی را در کد خود وارد کنند، این خطا بیشتر از آنچه انتظار دارید رخ می دهد. خط # فهرست شده در پیام خطا به محل مشکل اشاره دارد - این به شما کمک می کند تا مشکل را سریعتر و بدون سر و صدا حل کنید.

رفع نمی‌تواند اطلاعات سرصفحه را تغییر دهد - سرصفحه‌ها قبلاً ارسال شده‌اند

اکنون که می دانید علت این خطا چیست، می توانید به رفع آن بپردازید. ما دو گزینه برای رفع مشکل به شما نشان خواهیم داد، که اگر به تنهایی کمکی نکرد، می توانید به صورت جداگانه یا به نوبه خود امتحان کنید.

گزینه 1 - ویرایش فایل معیوب

اولین راه حل برای خطا هشدار: نمی توان اطلاعات هدر را تغییر داد– تصحیح دستی فایل با خطا. شما قبلاً اطلاعات لازم برای یافتن مشکل را در خود پیام خطا دارید (به یاد داشته باشید، این اولین فایل در پیام است). تنها کاری که لازم است این است که این فایل را از طریق FTP با استفاده از یک کلاینت مانند FileZilla یا از طریق یک مدیر فایل باز کنید.

اساساً، تنها چیزی که باید در اینجا مراقب باشید این است که فضاهای اضافی/خطوط خالی فایل را حذف کنید. یک مکان خوب برای شروع، خط # ذکر شده در پیام خطا خواهد بود. از این مرحله به بعد، می‌توانید به تجزیه باقی‌مانده فایل به دنبال فضاهای غیرضروری یا خطوط خالی دیگر تا انتهای سند ادامه دهید.

مطمئن شوید که تگ های شروع و پایان PHP را به درستی می نویسید. قبل یا بعد از برچسب نباید فاصله ای وجود داشته باشد ، مانند برچسب ?> . همچنین آخرین خط کد نباید با فاصله یا خط جدید اضافی ختم شود.

در تصویر زیر می توانید فایل را مشاهده کنید wp-config.php، که قبل از اولین تگ PHP دارای فاصله است.


سرنخ: در بسیاری از ویرایشگرهای متن، می توانید فضاهای غیر ضروری را به طور خودکار حذف کنید. به عنوان مثال، برای حذف فضاهای اضافی در ویرایشگر Atom، تمام کدها را انتخاب کنید و به P بروید بسته ها -> فضای سفید -> حذف فضای سفید انتهایی.

گزینه 2 - فایل معیوب را جایگزین کنید

البته، ویرایش تعدادی از فایل های دارای خطا ممکن است دشوار باشد. فایل ها ممکن است مربوط به افزونه یا تمی باشند که به تازگی در سایت خود نصب کرده اید یا حتی ممکن است فایل های اصلی وردپرس باشند.

اگر خطا واقعاً ناشی از یک افزونه یا موضوع باشد، تنها کاری که باید انجام شود این است که آن را دوباره نصب کنید. این عمل در بیشتر موارد کمک می کند. از طرف دیگر، اگر فایل اصلی وردپرس دلیل خطا است، بهترین راه حل این است که یک نسخه تمیز از وردپرس بگیرید و فایلی را با خطای نصب خود با همان فایل در نسخه کارآمد جایگزین کنید. این اطمینان حاصل می کند که فایل شکسته به حالت اولیه خود بازیابی می شود در حالی که بقیه نصب سایت وردپرس شما دست نخورده باقی می ماند. اکنون، فقط صفحه را بارگیری مجدد کنید و مطمئن شوید که خطا برطرف شده است.

در نتیجه

چه یک قطعه کد را در یک فایل قرار داده باشید، چه یک افزونه/موضوع جدید اضافه کرده باشید یا کد را با دست نوشته باشید، خطر فضاهای اضافی در فایل وجود دارد. این فضاهای به ظاهر بی گناه می توانند یک باگ وردپرس باشند هشدار: نمی‌توان اطلاعات سرصفحه را تغییر داد - سرصفحه‌ها قبلاً ارسال شده‌اند.

در این راهنما نحوه رفع چنین خطاهایی را توضیح داده ایم و اکنون سایت شما دوباره طبق انتظار کار می کند. راهنمای بیشتر وردپرس را می توانید در اینجا پیدا کنید.

نویسنده

النا دارای تحصیلات فنی حرفه ای در زمینه فناوری اطلاعات و تجربه برنامه نویسی به زبان های مختلف برای پلتفرم ها و سیستم های مختلف است. او بیش از 10 سال را به حوزه وب اختصاص داده است و با CMS های مختلف مانند دروپال، جوملا، مجنتو و البته محبوب ترین سیستم مدیریت محتوای امروزی - وردپرس - کار کرده است. مقالات او همیشه فنی و دقیق هستند، چه بررسی وردپرس باشد یا چگونه سرور VPS خود را راه اندازی کنید.

یک بار وقتی به وبلاگم رفتم، با تعجب متوجه یک خطای نامفهوم شدم، چیزی شبیه به:

هشدار: نمی‌توان اطلاعات سرصفحه را تغییر داد - سرصفحه‌ها قبلاً ارسال شده‌اند (خروجی در /xxxxxxxx/wp-config.php:1 شروع شده است)

و هیچ راهی برای دسترسی به ادمین وجود ندارد. من بلافاصله رفتم تا بررسی کنم که مشکل فایل wp-config.php چیست. همه چیز سر جای خود بود، پسوردهای پایگاه داده درست بودند. من فکر کردم دوباره هک شده است)) اما باز هم هیچ نشانه ای از خرابکاری در FTP وجود نداشت. عجیب ترین چیز (این در نهایت من را کاملاً گیج کرد) این بود که فقط لینک سایت بدون www کار نمی کرد یا برعکس (دقیقاً یادم نیست). شروع کردم به ضربه زدن به هاست، تنظیمات پنل مدیریت دامنه را نگاه کنید - به طور کلی، خیلی چیزها.

اما معلوم شد که خیلی ساده تر است - یک BOM در ابتدای فایل پیکربندی وجود داشت- نشانگر (امضا) برای فایل های UTF-8. به همین دلیل خطای فوق پرتاب شد. برای اینکه این اتفاق برای شما نیفتد، ابتدا باید از ویرایشگرهای کد استفاده کنید که یا اصلا این امضا را قرار ندهند یا قبل از ذخیره فایل مشخص کنند که آیا به آن نیاز است یا خیر.

در برخی از ویرایشگرهای متن، می توانید چک باکس های "شامل امضای یونیکد (BOM)"، "Add Byte Order Mark" یا موارد مشابه را در تنظیمات پیدا کنید. در غیر این صورت، بدون اینکه بتوانید یک گزینه غیر ضروری را در یک برنامه خاص غیرفعال کنید، استفاده از آن توصیه نمی شود. در انجمن های تخصصی می توانید لیستی از ویرایشگرهای متن خوب را پیدا کنید، این است - Notepad2، PSPad، UnicEdit، Notepad++. در مورد دومی، ابزاری نسبتاً قدرتمند، مطالب زیادی نوشته شده است. من به‌طور تصادفی یک ویرایشگر جایگزین در رایانه‌ام در دسترس داشتم - آکلپاد- من از آن برای کارهای مشابه استفاده می کنم.

لازم به ذکر است که در اینجا یک نکته دیگر وجود دارد - یک خطا با BOM می تواند نه تنها در فایل wp-config.php باشد. علاوه بر این، با غیرفعال بودن گزینه نمایش اخطارها، به هیچ وجه نخواهید دید که مشکل به کجا رسیده است. در چنین مواردی (خوب، و همه موارد دیگر)، من استفاده از یک ساده را توصیه می کنم اسکریپت برای یافتن فایل ها با BOM. باید از یوری بلوتیتسکی برای توسعه تشکر کرد.

استفاده از اسکریپت بسیار ساده است.

  1. فایل مورد نظر
  2. آن را به سرور FTP در فهرست اصلی آپلود کنید. اگر وردپرس در ریشه سایت (بلکه مثلاً در پوشه وبلاگ) نصب نشده باشد، باید اسکریپت را در فهرستی که وردپرس در آن قرار دارد قرار داده و از آن اجرا شود.
  3. راه اندازی بسیار ساده است - پیوند http://your.site/find_bom.php را در نوار آدرس مرورگر تایپ کنید

در نتیجه، لیستی از فایل های معیوب را دریافت کنید. به هر حال، برای سرعت، اسکریپت فقط دایرکتوری هایی را بررسی می کند که کاربران معمولاً فایل ها را در آنها آپلود می کنند - ریشه، /wp-content/themes و /wp-content/plugins.

اساساً همین است. چقدر حل چنین مشکل ساده ای سخت بود. امیدوارم تجربه من کمی به شما کمک کرده باشد، و اکنون وقتی یک هشدار مربوطه ظاهر می شود، می دانید که چه کاری باید انجام دهید :) اگر نمی توانید یک یا آن فایل را از BOM تعمیر کنید، می توانید به سادگی یک فایل جدید را از توزیع وردپرس آپلود کنید.

P.S. برای تازه دامادها سایت مناسب برگزاری ضیافت و حل تمام مسائل مربوط به عروسی است.

آشنایی با هدرهای HTTP و فیلدهای هدر HTTP

هدرهای HTTPارائه اطلاعات حیاتی مورد نیاز برای ارسال تراکنش HTTP از طریق پروتکل http.

قالب کلی هدر HTTP شامل جفت های نام - مقدار جدا شده با دو نقطه در فیلد سرصفحه است. هر یک از جفت نام-مقدار با یک توالی کاراکتر بازگشتی (CR) و یک خط تغذیه (LF) خاتمه می یابد. فیلدهای خالی در انتهای هر هدر نشان دهنده انتهای سرصفحه است.

فرمت هدر رایج که توسط برنامه ها دنبال می شود به صورت زیر است:

انواع هدر HTTP

چهار نوع هدر پیام HTTP وجود دارد. آن ها هستند:

  • سربرگ عمومی
  • سربرگ درخواست
  • هدر پاسخ
  • سرصفحه نهاد

سربرگ عمومی

فیلدهای General Header قابلیت کاربردی مشترک در پیام های درخواست و پاسخ دارند. فیلدهای سرصفحه فقط برای پیام ارسال شده اعمال می شوند و در موجودیت منتقل شده اعمال نمی شوند.

ساختار یک هدر کلی به این صورت است:

کنترل کشفیلد دستورالعمل هایی را مشخص می کند که باید توسط هر مکانیزم ذخیره سازی در یک سیستم درخواست و پاسخ دنبال شود.

ارتباطفیلد به فرستنده اجازه می دهد تا گزینه های مورد نیاز برای اتصال را مشخص کند. هدر اتصال دارای فرمت زیر است:

تاریخفیلد تاریخ و زمان شروع پیام را نشان می دهد. فرمت تاریخ مشخص شده در HTTP به این صورت است:

پراگمافیلد به گنجاندن دستورالعمل خاص اجرایی قابل اجرا برای هر گیرنده در یک سیستم درخواست و پاسخ کمک می کند.

تریلرمقدار فیلد مشخص می‌کند که آیا مجموعه‌ای از فیلدهای سرصفحه در تریلر پیام با کدگذاری انتقال تکه کدگذاری می‌شوند یا خیر.

رمزگذاری انتقالفیلد نشان می دهد که آیا هر نوع تغییری در بدنه پیام اعمال شده است یا خیر.

ارتقا دهیدفیلد مشتریان را قادر می سازد تا پروتکل های ارتباطی پشتیبانی شده اضافی را مشخص کنند. همچنین سرور را قادر می سازد تا پروتکل ها را با پروتکل های اضافی تغییر دهد.

از طريقفیلد فیلدهای اجباری هستند که توسط پراکسی ها و دروازه ها استفاده می شوند که پروتکل های میانی را نشان می دهند. همچنین گیرنده درخواست بین کاربر-عامل و سرور و پاسخ بین سرور و مشتری را نشان می دهد.

هشدارفیلد حاوی اطلاعات اضافی در مورد وضعیت پیام و تبدیل پیام است که در پیام منعکس نمی شود.

هدرهای هشدار معمولاً همراه با پاسخ ارسال می شوند.

فیلد هدر درخواست به مشتریان اجازه می دهد تا اطلاعات درخواست و اطلاعات مشتری را به سرور ارسال کنند.

ساختار هدر درخواست به صورت زیر است:

تایید کنیدفیلد انواع رسانه ای را مشخص می کند که برای پاسخ قابل قبول هستند.

"*" برای گروه بندی انواع رسانه در محدوده استفاده می شود

"*/*" همه انواع رسانه را نشان می دهد

"type/*" همه زیرشاخه های یک نوع را نشان می دهد

Charset را بپذیریدفیلد مجموعه کاراکترهای قابل قبول پاسخ را نشان می دهد. این باعث می شود مشتریان قادر به درک مجموعه های کاراکتر با هدف خاص باشند تا به سرور سیگنال دهند تا سند را در این مجموعه کاراکترها نشان دهد.

رمزگذاری را بپذیریدفیلد مشابه Accept است، کدگذاری محتوای قابل قبول پاسخ را محدود می کند.

پذیرش-زبانفیلد مشابه Accept است، مجموعه ترجیحی زبان های طبیعی را محدود می کند.

مجوزفیلد برای عوامل کاربری است که می خواهند خود را با سرور احراز هویت کنند.

انتظارفیلد رفتارهای سرور مورد نیاز مشتری را نشان می دهد.

از جانبفیلد حاوی آدرس ایمیل کاربری است که عامل کاربر درخواست کننده را کنترل می کند.

میزبانفیلد میزبان اینترنت و شماره پورت منبع درخواستی از URI کاربر را مشخص می کند.

اگر مطابقت داشته باشدفیلد برای ساخت روش های شرطی استفاده می شود.

If-Modified-Sinceفیلد برای ایجاد یک روش شرطی استفاده می شود. اگر نوع درخواستی در مدت زمان مشخص شده اصلاح نشود، موجودیت از سرور بازگردانده نخواهد شد.

اگر-هیچ-تطابقفیلد به روز رسانی کارآمد اطلاعات حافظه پنهان با حداقل سربار تراکنش را امکان پذیر می کند.

اگر محدودهفیلد به مشتریان امکان می دهد بخشی از موجودیت گمشده را دریافت کنند یا در غیر این صورت، مشتریان می توانند درخواست ارسال کل موجودیت جدید را داشته باشند.

If-Unmodified-Sinceفیلد به سرور اجازه می دهد تا عملیات درخواستی را در صورتی که از زمان تعیین شده در این فیلد تغییر نکرده است، انجام دهد.

ماکس فورواردفیلد مکانیزم هایی را با روش های TRACE و OPTIONS برای محدود کردن پراکسی ها یا دروازه های ارسال درخواست ارائه می دهد.

مجوز پروکسیفیلد به مشتری اجازه می دهد تا به پروکسی ایمن شناسایی کند.

دامنهفیلد موجودیت های HTTP را در پیام های HTTP مشخص می کند که به صورت دنباله ای از بایت ها نمایش داده می شوند. درخواست بازیابی HTTP یک یا چند زیر دامنه از موجودیت را با استفاده از روش های GET درخواست می کند.

ارجاع دهندهفیلد به مشتریان اجازه می دهد تا آدرس URI منبعی را که Request-URI از آن یافت می شود، مشخص کنند.

TEفیلد نشان‌دهنده کدگذاری انتقال پسوند است که می‌تواند در پاسخ بپذیرد. علاوه بر این، نشان می دهد که آیا فیلدهای تریلر را در کدگذاری انتقال تکه می پذیرد یا خیر.

عامل کاربرفیلد حاوی اطلاعاتی در مورد عامل کاربر درخواست کننده است.

سربرگ پاسخ HTTP

فیلد سرصفحه پاسخ به سرور اجازه می دهد تا اطلاعات اضافی را از طریق پاسخ ها به غیر از پاسخ ساده Status-Line ارسال کند.

ساختار هدر پاسخ به این صورت است:

محدوده ها را بپذیریدفیلد سرورها را قادر می سازد تا پذیرش درخواست های محدوده منابع را نشان دهند.

سنفیلد نشان دهنده مدت زمان تقریبی فرستنده از زمانی است که سرور پاسخ داده است.

ETagفیلد مقدار فعلی تگ نهاد را برای یک درخواست ارائه می دهد.

محلفیلد گیرندگان را به مکان‌هایی غیر از Request-URI هدایت می‌کند تا شناسایی کامل یک منبع جدید را انجام دهد.

پروکسی احراز هویتفیلد یک شامل اجباری برای پاسخ احراز هویت پروکسی است.

تلاش مجدد - بعدزمانی که یک سرویس در دسترس نباشد از فیلد به عنوان پاسخ استفاده می شود تا نشان دهد مدت زمانی که سرویس برای مشتری در دسترس نخواهد بود.

سرورفیلد حاوی اطلاعاتی در مورد نرم افزار مورد استفاده سرور برای رسیدگی به درخواست ها است.

متفاوتفیلد فیلد درخواستی را نشان می‌دهد که تعیین می‌کند آیا حافظه نهان برای استفاده از پاسخ یک درخواست بدون تأیید مجدد پاسخ واجد شرایط است یا خیر.

WWW-Authenticateفیلد زمانی استفاده می شود که پیام پاسخی غیرمجاز باشد.

فیلدهای سرصفحه موجودیت، فرااطلاعات مربوط به نهاد-بدنه یا منبع درخواستی را تعریف می کنند. قالب entity-header به نظر می رسد:

اجازهلیست فیلد مجموعه ای از روش های پشتیبانی شده توسط منابع شناسایی شده Request-URI.

رمزگذاری محتوافیلد به عنوان یک اصلاح کننده نوع رسانه استفاده می شود.

محتوا-زبانفیلد زبان طبیعی را برای مشتریان یک نهاد توصیف می کند.

طول محتوافیلد اندازه یک موجودیت را نشان می دهد که با عدد اعشاری نشان داده شده است.

مکان محتوافیلد زمانی منبع را برای یک موجودیت فراهم می کند که از مکانی غیر از Requested-URI قابل دسترسی باشد.

محتوا-MD5فیلد بررسی یکپارچگی پیام (MIC) را با استفاده از خلاصه MD5 در بدنه موجودیت ارائه می دهد.

محدوده محتوافیلد مشخص می‌کند که قسمتی از بدنه موجودیت کامل باید در کجا اعمال شود.

نوع محتوافیلد نشان می دهد که آیا نوع رسانه بدنه موجودیت برای گیرنده ارسال می شود یا از روش GET برای ارسال درخواست ها استفاده می شود.

منقضی می شودفیلد تاریخ/زمانی را ارائه می دهد که پس از آن پاسخ بیات می شود.

آخرین تغییرفیلد تاریخ و زمان آخرین تغییر نوع را نشان می دهد.

ترتیب ظاهر شدن نام فیلد در هدر هنگام دریافت، ناچیز است. معمولاً سرصفحه‌های عمومی ابتدا قرار می‌گیرند و به دنبال آن سرصفحه درخواست یا پاسخ با هدر نهاد در پایان قرار می‌گیرد.

اطلاعیه حق چاپ: لطفاً این مقاله را بدون اجازه کتبی قبلی از سایت کپی یا ترجمه نکنید

HTTP Debugger یک تحلیلگر HTTP بدون پروکسی برای توسعه دهندگان است که توانایی ضبط و تجزیه و تحلیل هدرهای HTTP، کوکی ها، پارامترهای POST، محتوای HTTP و سرصفحه های CORS را از هر مرورگر یا برنامه دسکتاپ فراهم می کند. رابط کاربری عالی و استفاده بسیار آسان. نه یک پروکسی، نه مشکل شبکه!

در این مقاله بدون پرداختن به جزئیات به این می پردازیم که هدرها برای چه چیزی هستند. شرح نقش های رایج ترین سرفصل ها در مقالات بعدی آورده خواهد شد.

تمامی مقالات این مجموعه:

  • هدرهای Http چیست؟ نظریه عمومی.

httpمخفف عبارت HyperText Transfer Protocol (پروتکل انتقال ابرمتن) است. پروتکل مجموعه ای از قوانین است که توسط آن دستگاه های مختلف ارتباط برقرار می کنند. در دهه 1990 ایجاد شد. اکنون تقریباً در همه جا از آن در اینترنت استفاده می شود. هر چیزی که در پنجره مرورگر می بینید از طریق این پروتکل دریافت شده است. هدرهای http احتمالاً اصلی ترین چیز در ارتباط بین دستگاه ها هستند. آنها اطلاعات اولیه را در مورد اتصالی که ایجاد می شود و اطلاعاتی که از طریق آن ارتباط منتقل می شود، منتقل می کنند.
بیایید نگاهی به نمودار ارتباطی این دو دستگاه بیندازیم. اجازه دهید این دستگاه‌ها رایانه شما و برخی سرورها در اینترنت باشند:

همانطور که می بینید، مرورگر یک درخواست http ارسال کرد. ممکن است چیزی شبیه این به نظر برسد:

GET /other-19 HTTP/1.1
میزبان: www.scriptsite.ru
عامل کاربر: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (NET CLR 3.5.30729)
پذیرش: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip، deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
زنده نگه دارید: 300
اتصال: زنده نگه دارید

در این مورد، خط اول یک رشته کوئری است، همه خطوط دیگر سربرگ http هستند که حاوی اطلاعات اضافی در مورد درخواست، مشتری درخواست کننده این اطلاعات و بسیاری موارد دیگر هستند.
در پاسخ به درخواست ما، سرور می تواند هدرهای زیر را ارسال کند:

سرور: Apache/2.0.61 (یونیکس) mod_ssl/2.0.61 OpenSSL/0.9.8k mod_dp20/0.99.2 PHP/5.2.5 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1. (2007-09-24)

X-Powered-By: PHP/5.2.5

Set-Cookie: PHPSESSID=ft47gokfee6amv3eda3k1p93s3; مسیر=/

Cache-Control: بدون ذخیره، بدون حافظه پنهان، باید مجدداً تأیید شود، پس از بررسی = 0، قبل از بررسی = 0

پراگما: بدون کش

Keep Alive: timeout=10، max=1024

اتصال: زنده نگه دارید

Transfer-Encoding: تکه تکه شده

نوع محتوا: متن/html

خط اول خط وضعیت است. بقیه خطوط هدر هستند. در طرح، نشان داده شد که محتوای صفحه نیز بارگذاری می شود. اما این محتوا معمولا در افزونه هایی که هدرها را مشاهده می کنند نمایش داده نمی شود. و محتوای صفحه فقط یک مورد خاص است. طبق پروتکل، صفحه لازم نیست منتقل شود. در عوض، می توان یک تصویر، یک فایل صوتی و یک ویدیو را انتقال داد. و همه آنها عناوین بسیار متفاوتی دارند.

چگونه هدر http را ببینیم؟

برای دیدن هدرهای http، پلاگین های زیر را برای مرورگر فایرفاکس توصیه می کنم:

اگر از مرورگر کروم استفاده می کنید، می توانید با کلیک بر روی دکمه تنظیمات - ابزار - ابزار توسعه دهنده، تمام اطلاعات را مشاهده کنید. تب شبکه ها
من نمی توانم به کاربران مرورگر opera توصیه کنم، زیرا با این مرورگر دوست نیستم. پس از نصب افزونه ها و اجرای آنها، سعی کنید صفحه را به روز کنید. بلافاصله لیست های عظیمی از درخواست ها و پاسخ ها را مشاهده خواهید کرد که از طریق آنها مرورگر شما با سرور ارتباط برقرار کرده است.

هدرهای Http و دسترسی به آنها در php

اگر یک توسعه دهنده php هستید، می توانید با استفاده از تابع getallheaders() به هدرهای درخواست دسترسی داشته باشید. برای درک نحوه عملکرد آن، اجازه دهید کد زیر را اجرا کنیم:

و ما پرینت آرایه ای از هدرها را دریافت می کنیم.

اما بیشتر اوقات از طریق متغیر جهانی $_SERVER قابل دسترسی هستند. تقریباً هر هدر http دارای یک نام عنصر مشابه در این متغیر است که توسط اصل HTTP_header_name تشکیل شده است. بنابراین برای همان 'User_Agent' یک متغیر $_SERVER['HTTP_USER_AGENT'] وجود دارد.

برای دریافت هدرهایی که سرور قرار است برای کاربر ارسال کند، از تابع headers_list() استفاده کنید. به عنوان یک قاعده، سرور هدرهای اجباری از دست رفته را در پایان کار همه اسکریپت ها ایجاد می کند. بنابراین، این آرایه شامل سرصفحه‌هایی است که سرور قبل از شروع اجرای اسکریپت ایجاد کرده است (و تغییر نخواهند کرد)، یا آن‌هایی که به صورت دستی تنظیم کرده‌ایم. می توانید آنها را به صورت دستی با استفاده از هدر تابع ("متن سرصفحه") تنظیم کنید.
بیایید کد زیر را اجرا کنیم:

در زمان فراخوانی تابع، یک پرینت از هدرها را خواهیم دید که آماده ارسال هستند:

هدر اول به طور خودکار تنظیم شد و نام سروری را که اسکریپت روی آن اجرا می شود را نشان می دهد. دومی به صورت دستی توسط ما نصب شده است. اگر مرورگر به هدر "Fruit" نیاز داشت، آن را از پاسخ http سرور گرفته و از آن استفاده می کرد. اما از آنجایی که مرورگر ما به آن نیاز ندارد، به سادگی خطی را که نمی فهمد نادیده می گیرد.

ساختار درخواست http

درخواست ما به این صورت است:

اولین خط در آن، همانطور که قبلا ذکر شد، رشته پرس و جو است. این متشکل از سه قسمت است:

  • روش(روش) - نشان دهنده نوع درخواست است. متداول ترین روش ها عبارتند از: GET، POST، HEAD. آنها در پاراگراف بعدی مورد بحث قرار خواهند گرفت.
  • مسیر(مسیر) - این معمولاً بخشی از URL است که بعد از دامنه می آید. به عنوان مثال، اگر http://www.scriptsite.ru/about/ را در نوار آدرس وارد کنید، مقدار مسیر /about/ خواهد بود.
  • پروتکل(پروتکل) - پروتکل مورد استفاده. به طور معمول از "HTTP" و نسخه پروتکل تشکیل شده است. به طور معمول، مرورگرهای مدرن از نسخه 1.1 استفاده می کنند

بعد سرصفحه هایی به شکل رشته هایی با فرمت "Name: value" قرار دارند.
به هر حال، داده های مربوط به کوکی ها نیز در این درخواست به عنوان یکی از هدرها منتقل می شود. اکثر این خطوط اختیاری هستند. پرس و جو را می توان به طور کلی به دو خط کاهش داد:

GET /article/show/4/ HTTP/1.1

میزبان: scriptsite.com

روش های درخواست

گرفتن

درخواست دریافت معمولاً برای درخواست یک سند استفاده می شود که در برخی پارامترها ارسال می شود.
این روش اصلی برای دریافت صفحات html، تصاویر، فایل های CSS و جاوا اسکریپت و غیره است.
با توجه به اینکه پارامترها می توانند هر چیزی باشند و سرور هیچ محدودیتی در نحوه پردازش آنها ندارد، اغلب از روش درخواست داده برای انتقال اطلاعات استفاده می شود. به عنوان مثال، یک فرم مانند این خواهیم داشت

در این صورت این پارامترها در نوار آدرس مرورگر قابل مشاهده خواهند بود.

پست

پست روشی است که برای ارسال داده ها به سرور استفاده می شود. اگرچه می توانید داده ها را با استفاده از روش GET از طریق نوار آدرس مرورگر به سرور ارسال کنید، POST در بیشتر موارد ارجح است. ارسال مقادیر زیاد داده از طریق GET غیرعملی است. علاوه بر این، GET محدودیت هایی دارد که به عنوان مثال اجازه نمی دهد این مقاله را از طریق یک خط مرورگر در سایت من منتشر کنم. درخواست های POST اغلب برای ارسال فرم های وب استفاده می شود. بیایید فرم مثال قبلی را با دادن متد POST تغییر دهیم.

برترین مقالات مرتبط