გადაუხდელი ინფორმაციის სათაურები. შეცდომის გამოსწორება: სათაურის ინფორმაციის შეცვლა შეუძლებელია - სათაურები უკვე გაგზავნილია

ამ სტატიაში განვიხილავთ, თუ რისთვის არის საჭირო სათაურები, დეტალურად არ გავეცნობით, რომელი რაზეა პასუხისმგებელი. ყველაზე გავრცელებული სათაურების როლები აღწერილი იქნება მომდევნო სტატიებში.

ყველა სტატია სერიიდან:

  • რა არის Http სათაურები? ზოგადი თეორია.

HTTPნიშნავს ჰიპერტექსტის გადაცემის პროტოკოლს. პროტოკოლი არის წესების ნაკრები, რომლითაც სხვადასხვა მოწყობილობა ცვლის მონაცემებს. იგი შეიქმნა 1990-იან წლებში. ახლა ის გამოიყენება თითქმის ყველგან ინტერნეტში. ყველაფერი, რასაც ხედავთ თქვენი ბრაუზერის ფანჯარაში, მიღებულია ამ პროტოკოლით. http სათაურები ალბათ მთავარია მოწყობილობებს შორის კომუნიკაციაში. ისინი გადასცემენ ძირითად ინფორმაციას დამყარებული კავშირისა და ამ კავშირის საშუალებით გადაცემული ინფორმაციის შესახებ.
მოდით შევხედოთ ორ მოწყობილობას შორის კომუნიკაციის დიაგრამას. დაე, ეს მოწყობილობები იყოს თქვენი კომპიუტერი და ზოგიერთი სერვერი ინტერნეტში:

როგორც ხედავთ, ბრაუზერმა გაგზავნა http მოთხოვნა. შეიძლება ასე გამოიყურებოდეს:

მიიღეთ /სხვა-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)
მიღება: ტექსტი/html, აპლიკაცია/xhtml+xml, აპლიკაცია/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
Keep-Alive: 300
კავშირი: შენარჩუნება-ცოცხალი

ამ შემთხვევაში, პირველი ხაზი არის მოთხოვნის ხაზი, ყველა სხვა ხაზი არის http სათაურები, რომლებიც შეიცავს დამატებით ინფორმაციას მოთხოვნის შესახებ, კლიენტის შესახებ, რომელიც ითხოვს ამ ინფორმაციას და მრავალი სხვა რამის შესახებ.
ჩვენი მოთხოვნის საპასუხოდ, სერვერს შეუძლია გამოაგზავნოს შემდეგი სათაურები:

სერვერი: Apache/2.0.61 (Unix) 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; გზა =/

ქეში-კონტროლი: არ ინახება, არ არის ქეში, ხელახალი შემოწმება, შემდგომი შემოწმება=0, წინასწარი შემოწმება=0

პრაგმა: ქეშის გარეშე

Keep-Alive: დროის ამოწურვა=10, მაქს=1024

კავშირი: Keep-Alive

გადაცემის კოდირება: დაქუცმაცებული

შინაარსის ტიპი: ტექსტი/html

პირველი ხაზი არის სტატუსის ხაზი. დარჩენილი ხაზები არის სათაურები. დიაგრამამ აჩვენა, რომ გვერდის შინაარსიც დატვირთულია. მაგრამ ეს შინაარსი, როგორც წესი, არ არის ნაჩვენები სათაურის მაყურებლის დანამატებში. და გვერდის შინაარსი მხოლოდ განსაკუთრებული შემთხვევაა. პროტოკოლის მიხედვით, გვერდი სულაც არ უნდა იყოს გადაცემული. ამის ნაცვლად, შესაძლებელია სურათის, ხმის ფაილის და ვიდეოს გადაცემა. და ყველა მათგანს ექნება ძალიან განსხვავებული სათაურები.

როგორ ვნახოთ http სათაურები?

იმისათვის, რომ ნახოთ http სათაურები, მე გირჩევთ შემდეგი დანამატები Firefox ბრაუზერისთვის:

თუ იყენებთ Chrome ბრაუზერს, შეგიძლიათ ნახოთ ყველა ინფორმაცია პარამეტრების ღილაკზე დაწკაპუნებით - ინსტრუმენტები - დეველოპერის ხელსაწყოები. ქსელების ჩანართი.
ოპერის ბრაუზერის მომხმარებლებს ვერანაირ რჩევას ვერ მივცემ, რადგან არ ვმეგობრობ ამ ბრაუზერთან. მას შემდეგ, რაც დანამატები დაინსტალირდება და მუშაობს, სცადეთ გვერდის განახლება. თქვენ დაუყოვნებლივ ნახავთ მოთხოვნისა და პასუხების უზარმაზარ სიას, რომლითაც თქვენი ბრაუზერი დაუკავშირდა სერვერს.

Http სათაურები და მათზე წვდომა php-ში

თუ თქვენ ხართ PHP დეველოპერი, შეგიძლიათ წვდომა მოთხოვნის სათაურებზე getallheaders() ფუნქციის გამოყენებით. იმის გასაგებად, თუ როგორ მუშაობს, მოდით გავუშვათ შემდეგი კოდი:

და ჩვენ ვიღებთ სათაურის მასივის ამონაწერს.

მაგრამ უფრო ხშირად მათზე წვდომა ხდება გლობალური ცვლადის $_SERVER მეშვეობით. თითქმის ყველა http სათაურს აქვს მსგავსი ელემენტის სახელი ამ ცვლადში, რომელიც ჩამოყალიბებულია HTTP_header_name პრინციპის მიხედვით. ასე რომ, იგივე 'User_Agent'-ისთვის არის ცვლადი $_SERVER['HTTP_USER_AGENT'];

სათაურების მისაღებად, რომლებსაც სერვერი აპირებს მომხმარებლისთვის გაგზავნას, გამოიყენება headers_list() ფუნქცია. როგორც წესი, სერვერი ადგენს ყველა სკრიპტის ბოლოს გამოტოვებულ საჭირო სათაურებს. ამიტომ, ეს მასივი შეიცავს სათაურებს ან მათ, რომლებიც სერვერმა შექმნა სკრიპტის შესრულებამდე (და ისინი არ შეიცვლება), ან ის, რაც ჩვენ ხელით დავაყენეთ. მათი ხელით დაყენება შესაძლებელია ფუნქციის სათაურის გამოყენებით ("header text");
მოდით გავუშვათ შემდეგი კოდი:

ჩვენ დავინახავთ სათაურების ამონაბეჭდს, რომელიც მზად არის გასაგზავნად ფუნქციის გამოძახების დროს:

პირველი სათაური დაყენებულია ავტომატურად და ის შეიცავს სერვერის სახელს, რომელზეც მუშაობს სკრიპტი. მეორე ჩვენ მიერ ხელით დააინსტალირეთ. თუ ბრაუზერს სჭირდებოდა "Fruit" სათაური, ის აიღებდა მას სერვერის http პასუხიდან და გამოიყენებდა. მაგრამ რადგან ჩვენს ბრაუზერს ეს არ სჭირდება, ის უბრალოდ უგულებელყოფს იმ ხაზს, რომელიც არ ესმის.

HTTP მოთხოვნის სტრუქტურა

ჩვენი მოთხოვნა ასე გამოიყურება:

მასში პირველი ხაზი, როგორც უკვე აღვნიშნეთ, არის შეკითხვის ხაზი. იგი შედგება სამი ნაწილისაგან:

  • მეთოდი(მეთოდი) - მიუთითებს რა ტიპის მოთხოვნა. ყველაზე გავრცელებული მეთოდები: GET, POST, HEAD. მათ შესახებ მომდევნო აბზაცში დაიწერება.
  • გზა(გზა) - ჩვეულებრივ ეს არის URL-ის ნაწილი, რომელიც მოდის დომენის შემდეგ. მაგალითად, თუ მისამართის ზოლში შეიყვანთ http://www.scriptsite.ru/about/, ბილიკის მნიშვნელობა იქნება /about/.
  • ოქმი(პროტოკოლი) - გამოყენებული პროტოკოლი. როგორც წესი, შედგება "HTTP" და პროტოკოლის ვერსიისგან. როგორც წესი, თანამედროვე ბრაუზერები იყენებენ 1.1 ვერსიას

შემდეგ მოდის სათაურები "Name: value" ფორმატის სტრიქონების სახით.
სხვათა შორის, ქუქი-ფაილის მონაცემები ასევე გადაიცემა ამ მოთხოვნაში, როგორც ერთ-ერთი სათაური. ამ ხაზების უმეტესობა არჩევითია. მოთხოვნა შეიძლება შემცირდეს მხოლოდ ორ ხაზამდე:

მიიღეთ /სტატია/შოუ/4/ HTTP/1.1

მასპინძელი: scriptsite.ru

მოთხოვნის მეთოდები

მიიღეთ

მიღების მოთხოვნა, როგორც წესი, გამოიყენება დოკუმენტის მოთხოვნისა და ზოგიერთი პარამეტრის გადასაცემად.
ეს არის ძირითადი მეთოდი, რომელიც გამოიყენება HTML გვერდების, სურათების, CSS და JavaScript ფაილების მისაღებად და ა.შ.
იმის გამო, რომ პარამეტრები შეიძლება იყოს ნებისმიერი, და სერვერს არ აქვს შეზღუდვები იმის შესახებ, თუ როგორ შეიძლება მათი დამუშავება, მონაცემთა მოთხოვნის მეთოდი ხშირად გამოიყენება ინფორმაციის გადასაცემად. მაგალითად, გვექნება ასეთი ფორმა

ამ შემთხვევაში, ეს პარამეტრები გამოჩნდება ბრაუზერის მისამართის ზოლში.

პოსტი

პოსტი არის მეთოდი, რომელიც გამოიყენება სერვერზე მონაცემების გასაგზავნად. მიუხედავად იმისა, რომ თქვენ შეგიძლიათ მონაცემების გაგზავნა სერვერზე GET მეთოდის გამოყენებით ბრაუზერის მისამართის ზოლის მეშვეობით, უმეტეს შემთხვევაში სასურველია გამოიყენოთ POST. GET-ის საშუალებით დიდი რაოდენობით მონაცემების გაგზავნა არაპრაქტიკულია. გარდა ამისა, GET-ს აქვს გარკვეული შეზღუდვები, რომლებიც არ იძლევა, მაგალითად, ამ სტატიის გამოქვეყნებას ჩემს ვებსაიტზე მხოლოდ ერთი ბრაუზერის ხაზით. POST მოთხოვნები ყველაზე ხშირად გამოიყენება ვებ ფორმების გასაგზავნად. მოდით შევცვალოთ ფორმა წინა მაგალითიდან, რათა მივცეთ მას POST მეთოდი

დღეს გადავწყვიტეთ გვესაუბრა რას ნიშნავს მესიჯი "გაფრთხილება: სათაურის ინფორმაციის შეცვლა შეუძლებელია - სათაურები უკვე გაგზავნილია (გამომავალი დაიწყო /home/...", გამოჩნდება საიტის გვერდზე მისი ძირითადი შინაარსის ნაცვლად.
როგორც გაირკვა, ინტერნეტში ამ თემაზე საკმარისად წერია, მაგრამ არ არსებობს განზოგადებული ინსტრუქცია იმის შესახებ, თუ რას ნიშნავს ეს ყველაფერი და როგორ მოვიშოროთ იგი.
ჩვენ გადავწყვიტეთ რამდენიმე წვეთი დავამატოთ ინფორმაციის უზარმაზარ ზღვას ამ თემაზე, რადგან ჩვენ პირადად შეგვხვდა ეს პრობლემა.

რამდენიმე ხნის წინ გადავიტანეთ რამდენიმე კლიენტის საიტი ერთი ჰოსტინგიდან მეორეზე.
ყველაფერი კარგად იყო, საიტები იყო ხელმისაწვდომი, მაგრამ როდესაც ვცადე ადმინისტრატორში შესვლა. პანელი, შესვლისა და პაროლის შეყვანის შემდეგ, მართვის პანელის ნაცვლად გამოჩნდა თეთრი გვერდი.
ჩვენ გადავამოწმეთ სხვა საიტებზე - იგივე.
შესაძლო მიზეზების გასარკვევად, ჩვენ ჩავრთეთ შეცდომის ჩვენება.
ამისათვის თქვენ უნდა დაარედაქტიროთ .htaccess ფაილი, რომელიც მდებარეობს საიტის ძირში FTP-ის საშუალებით, დაამატეთ მას ხაზი:

Php_flag display_errors ჩართულია

ამის შემდეგ, ადმინისტრაციულ პანელში შესვლისას, გამოჩნდა რამდენიმე შეტყობინება, როგორიცაა: „გაფრთხილება: შეუძლებელია სათაურის ინფორმაციის შეცვლა - სათაურები უკვე გაგზავნილი (გამომავალი დაიწყო /home/.../functions.php:1552)-ში /home/.../ public_html /wp-login.php 362 ხაზზე" და ა.შ.

ძიების შედეგად აღმოჩნდა ინფორმაცია, რომ ეს შეტყობინება აცნობებს, რომ სათაურის ინფორმაციის შეცვლა შეუძლებელია, რადგან სათაურები (ინფორმაცია მათ შესახებ) ადრე უკვე იყო გაგზავნილი და შემდეგ ფრჩხილებში მითითებული იყო რომელ სტრიქონებში რომელ ფაილებში იყო ეს გაკეთებული. .


სათაურები (სათაურები) არის სერვერის სერვისის ინფორმაცია, რომელზეც მდებარეობს საიტი. სანამ ბრაუზერი აჩვენებს საიტის შინაარსს, ის სერვერიდან იღებს სათაურებს, სადაც მითითებულია სხვადასხვა მონაცემები: ჩართულია თუ არა გვერდის ქეშირება, მისი კოდირება, გვერდის შინაარსის ტიპი და სხვა. საიტის კონტენტის მართვის სისტემებში სათაურები გენერირდება სხვადასხვა სისტემის ფაილებში განთავსებული ფუნქციებით.
აუცილებელი პირობა- სათაურები უნდა გაიგზავნოს გვერდის ძირითად შინაარსამდე (შინაარსამდე).


თუ საიტის კონტენტი გადაიცემა სათაურებამდე, მაშინ ჩნდება სიტუაცია, რომლის შესახებაც გვაფრთხილებს შეტყობინება „გაფრთხილება: არ შეიძლება სათაურის ინფორმაციის შეცვლა - სათაურები უკვე გამოგზავნილი...“ გვაფრთხილებს.

რა სიტუაციებში შეიძლება მოხდეს ეს? როგორც უკვე აღვნიშნეთ, თანამედროვე CMS-ში სათაურები ერთი ან რამდენიმე ფუნქციის შედეგია. ფუნქცია თავისთავად არის კოდის გარკვეული ფრაგმენტი, რომელიც ჩასმულია საწყისს შორის და საბოლოო ?> ტეგები.

ამ ტეგების გარეთ ყველაფერი განიხილება გვერდის შინაარსად.
ამრიგად, თუ გვერდის დასაწყისში არის ფუნქციები, რომელთა შედეგს იგზავნება სათაურები და მივიღებთ შეტყობინებას „გაფრთხილება: არ შეიძლება სათაურის ინფორმაციის შეცვლა...“, მაშინ გამოდის, რომ ზოგიერთი ინფორმაცია, რომელიც დაკავშირებულია სათაურებთან. გვერდი იგზავნება სერვერიდან სათაურების წინ.

რა არის ეს ინფორმაცია და როგორ მოვძებნოთ იგი. ყველაზე ხშირად ეს არის სივრცეები და ცარიელი ხაზები.

სივრცე ან ცარიელი ხაზი ინტერპრეტირებულია, როგორც სიმბოლოები გვერდის მთავარ შინაარსში, ასე რომ, გამოდის, რომ ზოგიერთი ძირითადი შინაარსი მოდის სათაურების წინ და ჯერ იგზავნება ბრაუზერში.

თქვენ უნდა გადმოწეროთ თქვენს ლოკალურ კომპიუტერში შეტყობინებებში „გაფრთხილება: არ შეიძლება შეცვალოს სათაურის ინფორმაცია...“ ფაილები, გახსენით ისინი კოდის რედაქტორში (მე ვიყენებ NotePad++) და ყურადღებით შეამოწმეთ ცარიელი ხაზები და სივრცეები:

თუმცა, არსებობს ერთი მნიშვნელოვანი მახასიათებელი, რომელსაც შეუძლია მნიშვნელოვნად გაზარდოს გამოსავლის პოვნის დრო.
ფაილი შეიძლება არ შეიცავდეს ცარიელ ხაზებს ან სივრცეებს, მაგრამ თუ ის შენახული იყო UTF-8 კოდირებით, მაშინ რედაქტორს, რომელშიც ფაილი შეიქმნა, შეუძლია დოკუმენტის დასაწყისშივე ჩასვას ზედმეტი სიმბოლო. ეს სიმბოლო არის UTF-8 იდენტიფიკატორი, რომელიც ტოლია ნულოვანი სიგანის სივრცის, რომელიც შეიძლება საერთოდ არ იყოს ნაჩვენები რედაქტორში, მაგრამ სერვერზე ის აღიქმება როგორც მთავარი შინაარსი და გამოჩნდება სათაურების წინ.

იმისათვის, რომ თავი დააღწიოთ ამ იდენტიფიკატორს, თქვენ უნდა ხელახლა შეინახოთ გადმოწერილი ფაილები ფორმატში UTF-8 BOM-ის გარეშე(UTF-8 BOM-ის გარეშე).

NotePad++ შესანიშნავად უმკლავდება ამ ამოცანას.

ამ ქმედებებისა და სერვერზე ფაილების განახლების შემდეგ შეტყობინება უნდა გაქრეს და საიტი ჩვეულებრივად იმუშავებს.

ამ შეცდომის გამოსწორება ადვილია.
ხშირად ერთი და იგივე შეტყობინება ჩნდება სესიების დასაწყისში, ოდნავ განსხვავებული ფორმულირებით:
გაფრთხილება: სესიის ქუქი-ფაილის გაგზავნა შეუძლებელია - სათაურები უკვე გაგზავნილია
გაფრთხილება: სესიის ქეშის შემზღუდველის გაგზავნა შეუძლებელია - სათაურები უკვე გაგზავნილია

ბაიტის ორდერის ნიშანი
ხანდახან ყველაფერს ამოწმებ და იქ არაფერია. რედაქტორის შეცვლა. იხილეთ თქვენი ფაილი სხვა პროგრამაში. მაგალითად, Windows Notepad, Unicode კოდირების გამოყენებისას, ამატებს სერვისის სიმბოლოს Byte Order Mark თქვენი ფაილის დასაწყისში, არავითარი ინფორმირების გარეშე. გახსენით სკრიპტი სხვა რედაქტორში და წაშალეთ ნებისმიერი ზედმეტი სიმბოლო. და შეცვალეთ Notepad სხვა რედაქტორზე.
ან შეინახეთ UTF-8 კოდირებით BOM-ის გარეშე

ფორუმზე მრავალი კითხვა მაიძულებს აქ გავაკეთო მნიშვნელოვანი ჩანაწერი:
ეს შეცდომა არ ჩანს, რადგან „ზემოთ რაღაც წერია“ თქვენს სკრიპტში. და იქიდან გამომდინარე, რომ PHP აჩვენებს რაღაცას ბრაუზერში. ეს სულაც არ არის კოდი. Ეს შეიძლება იყოს შეცდომის შეტყობინება. შეიძლება იყოს სივრცე ან HTML ტეგი. Დიახ დიახ. ყველაზე ნიჭიერებისთვის: ჩვენ ვსაუბრობთ ბრაუზერში გაგზავნილ ნებისმიერ პერსონაჟზე და არა მხოლოდ მათზე, რომლებსაც ბრაუზერი უჩვენებს გამოუცდელ მომხმარებელს. HTML გვერდებს აქვთ საწყისი ტექსტი. და სწორედ ეს არის PHP სკრიპტის მუშაობის შედეგი და არა ლამაზი ასოები ნახატებით, როგორც ძალიან დიდი ნაწილი ფიქრობს.

HTTP სათაურის და HTTP სათაურის ველების გაგება

HTTP სათაურებიმიაწოდეთ სასიცოცხლო ინფორმაცია, რომელიც საჭიროა HTTP ტრანზაქციის მეშვეობით გაგზავნისთვის http პროტოკოლი.

ზოგადი HTTP სათაურის ფორმატი შეიცავს ორწერტილით გამოყოფილ სახელს - მნიშვნელობის წყვილებს სათაურის ველში. სახელი-მნიშვნელობის წყვილის თითოეული მთავრდება კარის დაბრუნების (CR) და ხაზის მიწოდების (LF) სიმბოლოების თანმიმდევრობით. თითოეული სათაურის ბოლოს ცარიელი ველები მიუთითებს სათაურის დასასრულს.

სათაურის საერთო ფორმატი, რომელსაც მოჰყვება აპლიკაციები, ასე გამოიყურება:

HTTP სათაურების ტიპები

არსებობს ოთხი ტიპის HTTP შეტყობინების სათაურები. Ისინი არიან:

  • გენერალური სათაური
  • მოთხოვნის სათაური
  • პასუხის სათაური
  • ერთეულის სათაური

გენერალური სათაური

ზოგადი სათაურის ველებს აქვთ საერთო გამოყენებადობა მოთხოვნისა და პასუხების შეტყობინებებში. სათაურის ველები ვრცელდება მხოლოდ გადაცემულ შეტყობინებაზე და არ ვრცელდება გადაცემულ ერთეულზე.

ზოგადი სათაურის სტრუქტურა ასე გამოიყურება:

ქეში-კონტროლიველი განსაზღვრავს დირექტივებს, რომლებიც უნდა დაიცვას ყველა ქეშირების მექანიზმმა მოთხოვნისა და პასუხის სისტემაზე.

კავშირიველი საშუალებას აძლევს გამგზავნს, დააკონკრეტოს კავშირისთვის საჭირო ვარიანტები. კავშირის სათაურს აქვს შემდეგი ფორმატი:

თარიღიველი წარმოადგენს თარიღსა და დროს შეტყობინების დაწყებისას. HTTP-ში მითითებული თარიღის ფორმატი ასე გამოიყურება:

პრაგმაველი ეხმარება შეიცავდეს იმპლემენტაციის სპეციფიკურ დირექტივას, რომელიც გამოიყენება ნებისმიერი მიმღებისთვის მოთხოვნისა და რეაგირების სისტემაზე.

Მისაბმელიველის მნიშვნელობა განსაზღვრავს, არის თუ არა სათაურის ველების ნაკრები შეტყობინების თრეილერში კოდირებული ნაწილის გადაცემის კოდირებით.

გადაცემა-კოდირებაველი მიუთითებს, არის თუ არა რაიმე ტიპის ტრანსფორმაცია გამოყენებული შეტყობინების სხეულზე.

განახლებაველი საშუალებას აძლევს კლიენტებს მიუთითონ დამატებითი მხარდაჭერილი საკომუნიკაციო პროტოკოლები. ის ასევე საშუალებას აძლევს სერვერს შეცვალოს პროტოკოლები დამატებითი პროტოკოლებით.

მეშვეობითველი არის სავალდებულო ველები, რომლებსაც იყენებენ პროქსიები და კარიბჭეები, რომლებიც მიუთითებენ შუალედურ პროტოკოლებზე. ის ასევე მიუთითებს მოთხოვნის მიმღებს მომხმარებლის აგენტსა და სერვერს შორის და პასუხს სერვერსა და კლიენტს შორის.

გაფრთხილებაველი შეიცავს დამატებით ინფორმაციას შეტყობინებების სტატუსზე და შეტყობინებების ტრანსფორმაციების შესახებ, რომლებიც არ არის ასახული შეტყობინებაში.

გამაფრთხილებელი სათაურები ჩვეულებრივ იგზავნება პასუხებით.

მოთხოვნის სათაურის ველი საშუალებას აძლევს კლიენტებს დამატებით გადასცენ მოთხოვნის ინფორმაცია და კლიენტის ინფორმაცია სერვერს.

მოთხოვნის სათაურის სტრუქტურა ასე გამოიყურება:

მიღებაველი განსაზღვრავს მედიის ტიპებს, რომლებიც მისაღებია პასუხისთვის.

"*" გამოიყენება მედიის ტიპების დიაპაზონში დასაჯგუფებლად

"*/*" მიუთითებს მედიის ყველა ტიპზე

"type/*" მიუთითებს ტიპის ყველა ქვეტიპს

Accept-Charsetველი მიუთითებს მისაღები სიმბოლოების კომპლექტს. ის აძლევს კლიენტებს შესაძლებლობას გაიგონ სპეციალური დანიშნულების სიმბოლოების ნაკრები, რათა სერვერს მიაწოდოს სიგნალი, რომ წარმოადგინოს დოკუმენტი ამ სიმბოლოების ნაკრებებში.

მიღება-დაშიფვრაველი მსგავსია Accept-ის, ზღუდავს პასუხის მისაღები შინაარსის კოდირებას.

Accept-Languageველი მსგავსია Accept-ის, ზღუდავს ბუნებრივი ენების სასურველ კომპლექტს.

ავტორიზაციაველი განკუთვნილია მომხმარებლის აგენტებისთვის, რომელთაც სურთ სერვერთან ავთენტიფიკაცია.

Ველითველი მიუთითებს კლიენტის მიერ მოთხოვნილ სერვერის ქცევებზე.

დანველი შეიცავს მომხმარებლის ელფოსტის მისამართს, რომელიც აკონტროლებს მომთხოვნი მომხმარებლის აგენტს.

მასპინძელიველში მითითებულია ინტერნეტ ჰოსტი და მოთხოვნილი რესურსის პორტის ნომერი მომხმარებლის URI-დან.

თუ-მატჩიველი გამოიყენება პირობითი მეთოდების შესაქმნელად.

თუ-შეცვლილია-მას შემდეგველი გამოიყენება პირობითი მეთოდის შესაქმნელად. თუ მოთხოვნილი ვარიანტი არ შეიცვლება მითითებულ დროში, ერთეული არ დაბრუნდება სერვერიდან.

თუ-არა-შემთხვევაველი საშუალებას იძლევა ქეში ინფორმაციის ეფექტური განახლება მინიმალური ტრანზაქციის ზედნადებით.

თუ-დიაპაზონიველი საშუალებას აძლევს კლიენტებს მიიღონ დაკარგული ერთეულის ნაწილი ან სხვაგვარად, კლიენტებს შეუძლიათ მოითხოვონ მთელი ახალი ერთეულის გაგზავნა.

თუ-არამოდიფიცირებული-მას შემდეგველი საშუალებას აძლევს სერვერს შეასრულოს მოთხოვნილი ოპერაცია, თუ ის არ შეცვლილა ამ ველში მითითებული დროის შემდეგ.

მაქს ფორვარდებიველი უზრუნველყოფს მექანიზმებს TRACE და OPTIONS მეთოდებით, რათა შეზღუდოს მოთხოვნის გადამისამართების პროქსი ან კარიბჭე.

პროქსის ავტორიზაციაველი საშუალებას აძლევს კლიენტს ამოიცნოს უსაფრთხო პროქსი.

Დიაპაზონიველი განსაზღვრავს HTTP ერთეულებს HTTP შეტყობინებებში, რომლებიც წარმოდგენილია ბაიტების თანმიმდევრობით. HTTP მოძიების მოთხოვნა ითხოვს ერთეულის ერთ ან მეტ ქვე დიაპაზონს GET მეთოდების გამოყენებით.

რეფერენტიველი საშუალებას აძლევს კლიენტებს მიუთითონ რესურსის მისამართი URI, საიდანაც მოიძებნება Request-URI.

თ.ე.ველი მიუთითებს გაფართოების გადაცემის კოდირებაზე, რომელსაც შეუძლია მიიღოს პასუხში. გარდა ამისა, ის მიუთითებს, მიიღებს თუ არა თრეილერის ველებს ნაწილაკების გადაცემის კოდირებაში.

მომხმარებელი-აგენტიველი შეიცავს ინფორმაციას მომთხოვნი მომხმარებლის აგენტის შესახებ.

HTTP პასუხის სათაური

პასუხის სათაურის ველი საშუალებას აძლევს სერვერს გადასცეს დამატებითი ინფორმაცია პასუხების მეშვეობით, გარდა მარტივი Status-Line პასუხისა.

პასუხის სათაურის სტრუქტურა ასე გამოიყურება:

მიღება-დიაპაზონებიველი საშუალებას აძლევს სერვერებს მიუთითონ რესურსების დიაპაზონის მოთხოვნების მიღება.

ასაკიველი მიუთითებს გამომგზავნზე სერვერის პასუხის გაცემის დღიდან.

ETagველი უზრუნველყოფს მოთხოვნისთვის ერთეულის ტეგის მიმდინარე მნიშვნელობას.

მდებარეობაველი გადამისამართებს მიმღებებს Request-URI-ის გარდა სხვა ადგილებში ახალი რესურსის იდენტიფიკაციის დასასრულებლად.

პროქსი-ავთენტიფიკაციაველი არის სავალდებულო ჩართვა პროქსის ავთენტიფიკაციის პასუხისთვის.

ხელახლა ცდა-შემდეგველი გამოიყენება პასუხად, როდესაც სერვისი მიუწვდომელია, რათა მიუთითებდეს იმ პერიოდის ხანგრძლივობა, რომლის განმავლობაშიც სერვისი მიუწვდომელი დარჩება კლიენტისთვის.

სერვერიველი შეიცავს ინფორმაციას პროგრამული უზრუნველყოფის შესახებ, რომელსაც სერვერი იყენებს მოთხოვნების დასამუშავებლად.

ცვალებადიველი მიუთითებს მოთხოვნის ველს, რომელიც განსაზღვრავს, არის თუ არა ქეში უფლება გამოიყენოს მოთხოვნის პასუხი პასუხის ხელახალი გადამოწმების გარეშე.

WWW-ავთენტიფიკაციაველი გამოიყენება, როდესაც საპასუხო შეტყობინება არაავტორიზებულია.

ერთეულის სათაურის ველები განსაზღვრავს მეტ ინფორმაციას ერთეულის ორგანოს ან მოთხოვნილი რესურსის შესახებ. ერთეულის სათაურის ფორმატი ასე გამოიყურება:

დაშვებაველების სია მეთოდების ნაკრები, რომელსაც მხარს უჭერს Request-URI იდენტიფიცირებული რესურსები.

შიგთავსის კოდირებაველი გამოიყენება როგორც მედიის ტიპის მოდიფიკატორი.

შინაარსი-ენაველი აღწერს ბუნებრივ ენას ერთეულის კლიენტებისთვის.

შინაარსი-სიგრძეველი მიუთითებს ათწილადი რიცხვით წარმოდგენილი ერთეულის ზომაზე.

შინაარსი - მდებარეობაველი უზრუნველყოფს რესურსის მდებარეობას ერთეულისთვის, როდესაც ის ხელმისაწვდომია მოთხოვნილი-URI-ის გარდა სხვა მდებარეობიდან.

შინაარსი-MD5ველი უზრუნველყოფს შეტყობინების მთლიანობის შემოწმებას (MIC) MD5 დაიჯესტის გამოყენებით ერთეულზე.

შინაარსი-დიაპაზონიველი განსაზღვრავს, სად უნდა იყოს გამოყენებული სრული ერთეულის ნაწილი.

Შინაარსის ტიპიველი მიუთითებს, ეგზავნება თუ არა ერთეულის ორგანოს მედიის ტიპი მიმღებს, თუ GET მეთოდი გამოიყენება მოთხოვნების გასაგზავნად.

იწურებაველი შეიცავს თარიღს/დროს, რომლის შემდეგაც პასუხი ძველდება.

ბოლო შეცვლილიაველში მითითებულია ვარიანტის ბოლო მოდიფიკაციის თარიღი და დრო.

თანმიმდევრობა, რომლითაც ველის სახელი გამოჩნდება სათაურში მიღებისას, უმნიშვნელოა. ჩვეულებრივ, ზოგადი სათაურები მოთავსებულია პირველ რიგში, რასაც მოჰყვება მოთხოვნის ან პასუხის სათაური ბოლოში ერთეულის სათაურით.

შენიშვნა საავტორო უფლებების შესახებ: გთხოვთ, არ დააკოპიროთ ან თარგმნოთ ეს სტატია საიტის წინასწარი წერილობითი ნებართვის გარეშე

HTTP Debugger არის პროქსის გარეშე HTTP ანალიზატორი დეველოპერებისთვის, რომელიც უზრუნველყოფს HTTP სათაურების, ქუქიების, POST პარამეტრების, HTTP შინაარსისა და CORS სათაურების აღბეჭდვისა და ანალიზის შესაძლებლობას ნებისმიერი ბრაუზერის ან დესკტოპის აპლიკაციიდან. გასაოცარია UI და ძალიან მარტივი გამოსაყენებელი. არა პროქსი, არ არის ქსელის პრობლემები!

ამ შეცდომის შეტყობინებას ხშირად ხვდებიან პროგრამისტები, რომლებიც იწყებენ PHP-ის გამოყენებას. იმის გაგება, თუ რატომ ხდება ეს შეცდომა, დაგეხმარებათ იპოვოთ გამოსავალი.

PHP უამრავ სამუშაოს აკეთებს თქვენთვის ვებ გვერდების გენერირებისთვის, თქვენ არც კი უკითხავთ. ვებ გვერდი შედგება ორი ნაწილისაგან: სათაური და ძირითადი.

ეს ჩვეულებრივი PHP შეცდომა შეინიშნება, როდესაც პროგრამისტი უშვებს შეცდომებს სათაურების მანიპულირების ან შექმნისას. აი მაგალითი:

გაფრთხილება: სათაურის ინფორმაციის შეცვლა შეუძლებელია – სათაურები უკვე გამოგზავნილია (გამომავალი დაწყებულია /home/usr1/public_html/sent.php:42) სტრიქონზე /home/usr1/public_html/includes/theme-header.php მე-12 ხაზზე.

როგორც წესი, თქვენ არ გჭირდებათ ფიქრი სათაურზე, რადგან ის ავტომატურად გენერირდება და შეიცავს ინფორმაციას გვერდის, სერვერისა და ქუქიების შესახებ. სათაურში არსებული ინფორმაცია მნიშვნელოვანია, მაგრამ ის ჩვეულებრივ არ ჩანს მომხმარებლისთვის. Აი ზოგიერთი მაგალითი:

თარიღი: ორშაბათი, 2006 წლის 10 ივლისი 18:51:59 GMT სერვერი: Apache/2.2.0 (Unix) mod_ssl/2.2.0 OpenSSL/0.9.7g Content-Encoding: gzip Content-Type: text/html

ზოგჯერ პროგრამისტებს სურთ შეცვალონ სათაურის ზოგიერთი მნიშვნელობა. მაგალითად, თუ PHP წარმოქმნის XML გამომავალს, Content-Type უნდა შეიცვალოს ამის მითითებით. კიდევ ერთი გავრცელებული მაგალითია მომხმარებლის ბრაუზერის სხვა ვებ გვერდზე გადამისამართება მდებარეობის სათაურის ელემენტის გამოყენებით, როგორც ეს აღწერილია ამ სტატიაში.

სათაური პირველი უნდა იყოს ვებ სერვერის პასუხში და გამოყოფილია სხეულისგან ერთი ცარიელი ხაზით. ამ შეცდომის მიზეზი არის ის, რომ ვებ გვერდის სხეულის გარკვეული ნაწილი უკვე გაეგზავნა მომხმარებელს, სანამ მოხდება სათაურის მნიშვნელობის დაყენების მცდელობა. ვინაიდან PHP ბევრ რამეს ამარტივებს თქვენთვის, პრობლემა შეიძლება ჩვეულ ადგილას იმალება. აქ მოცემულია რამდენიმე ინსტრუქცია პრობლემის მოსაძებნად:

  1. იპოვნეთ header() განცხადება, რომელიც იწვევს პრობლემას. შეცდომა უნდა იყოს ამ ხაზზე ან მის წინ.
  2. მოძებნეთ ნებისმიერი ინსტრუქცია, რომელსაც შეუძლია გამომავალი მომხმარებელზე გადასცეს ამ სათაურის განცხადებამდე. თუ იპოვით ერთს ან მეტს, შეცვალეთ კოდი, რომ გადაიტანოთ სათაურის ინსტრუქცია მათ წინ. რთულ პირობით განცხადებებს შეუძლია გაართულოს პრობლემა, მაგრამ მათ ასევე შეუძლიათ პრობლემის მოგვარებაში დახმარება. ალტერნატიულად, შეგიძლიათ გამოიყენოთ პირობითი გამოხატულება PHP სკრიპტის ზედა ნაწილში, რომელიც განსაზღვრავს სათაურის მნიშვნელობას რაც შეიძლება ადრე და დააყენებს მას იქ.
  3. დარწმუნდით, რომ არ არის სივრცეები PHP დაწყების და დასრულების ტეგების გარეთ. სანამ ცარიელი ხაზია დაწყების ტეგამდე
  4. თუ თქვენს ფაილს ინახავთ UTF-8 კოდირებით, მაშინ დარწმუნდით, რომ ფაილი შენახულია ხელმოწერის გარეშე (BOM-ის გარეშე). ხელმოწერა არის ფაილის დასაწყისში დამატებული ბაიტი და თუ PHP სკრიპტი შეინახება ამ ფორმატში, მაშინ ეს ბაიტი იქნება აღქმული, როგორც გვერდის სხეულის გამომავალი ნაწილი, რომელიც არ უნდა იყოს დაშვებული, რათა თავიდან ავიცილოთ პრობლემა. განიხილავენ.


 

შეიძლება სასარგებლო იყოს წაკითხვა: