Хүчтэй хариултууд html. Галзуу хэлбэрүүд. Имэйл хаягууд

Сайт хоорондын скрипт шахах халдлага

Сайт хоорондын скрипт (XSS) халдлагад халдагчид хууль ёсны вэб хуудас руу хортой код оруулдаг бөгөөд энэ нь үйлчлүүлэгч тал дээр хортой скрипт ажиллуулдаг. Хэрэглэгч халдвар авсан хуудсанд зочлох үед скриптийг хэрэглэгчийн хөтөч рүү татаж аваад тэнд ажиллуулдаг. Энэ схем нь олон төрлийн сортуудтай. Хортой скрипт нь хөтчийн күүкиг, сессийн жетон эсвэл хөтчид хадгалагдсан бусад нууц мэдээлэлд хандаж болно. Гэсэн хэдий ч бүх халдлагууд Зураг 1-т үзүүлсэн схемийн дагуу ажилладаг.

Зураг 1. Зураг 1. Ердийн XSS халдлага
XSS-ийн эмзэг байдал

Ердийн XSS халдлагын үед халдагчид серверийн вэб хуудсанд мөр оруулах аргыг олдог. Халдагчид вэб хуудсанд дараах мөрийг оруулсан гэж бодъё: alert("та халдлагад өртөж байна") . Хэрэглэгч энэ хуудсанд зочлох бүрд тэдний хөтөч энэ скриптийг татаж аваад хуудасны бусад контентын хамт ажиллуулдаг. Энэ тохиолдолд скриптийг ажиллуулсны үр дүнд хэрэглэгч "та халдлагад өртөж байна" гэсэн бичвэр бүхий цонхыг харах болно.

XSS-ийн үр дагавар

Хэрэв халдагчид вэб програмын XSS-ийн эмзэг байдлыг ашиглаж чадсан бол тэр хуудас руу өгөгдөлд хандах боломжтой скрипт оруулах боломжтой. дансхэрэглэгч. Энэ тохиолдолд халдагч олон хорлонтой үйлдэл хийж болно, жишээлбэл:

  • данс хулгайлах;
  • вирус тархах;
  • хайлтын түүх болон санах ойн контентод хандах;
  • Боломж олоорой алсын удирдлагахөтөч;
  • дотоод сүлжээн дэх техник хангамж, програм хангамжийн нөөц, програмуудыг сканнердаж ашиглах.
XSS халдлагаас урьдчилан сэргийлэх

XSS халдлагаас урьдчилан сэргийлэхийн тулд програм нь эцсийн хэрэглэгчдэд хүргэхийн өмнө хуудасны гаралтыг шифрлэх ёстой. Гаралтын өгөгдлийг шифрлэх үед HTML тэмдэглэгээөөр дүрслэлээр солигдсон - объектууд. Хөтөч нь эдгээр объектуудыг харуулдаг боловч ажиллуулдаггүй. Жишээлбэл, руу хөрвүүлсэн.

Хүснэгт 1-д зарим нийтлэг HTML тэмдэгтүүдийн объектын нэрийг харуулав.

Хүснэгт 1. HTML тэмдэгтүүдийн объектын нэрс Үр дүн Тайлбар Объектын нэр Объектын дугаар
Хагардаггүй зай
< Түүнээс бага<
> -аас илүү> >
& Амперсанд& &
¢ цент¢ ¢
£ Lb£ £
¥ Жена¥ ¥
евро
§ Догол мөр§ §
© Зохиогчийн эрх ©
® ® ®
Барааны тэмдэг

Хөтөч нь объектуудтай тулгарах үед тэдгээрийг HTML рүү буцааж хөрвүүлж хэвлэх боловч тэдгээрийг ажиллуулдаггүй. Жишээлбэл, хэрэв халдагчид серверийн вэб хуудасны хувьсагчийн талбарт string alert("та халдлагад өртөж байна") оруулбал, тайлбарласан стратегийг ашиглах үед сервер string alert("та халдлагад өртөж байна") гэсэн дохиог буцаана. .

Хөтөч нь шифрлэгдсэн скриптийг татаж авахдаа үүнийг дохиололд ("та халдлагад өртөж байна") хөрвүүлж, скриптийг вэб хуудасны нэг хэсэг болгон харуулах боловч үүнийг ажиллуулахгүй.

Сервер талын Java програмд ​​HTML код нэмэх

Хортой скрипт кодыг хуудастай хамт үзүүлэхээс урьдчилан сэргийлэхийн тулд таны аппликейшн нь бүх мөрийн хувьсагчдыг хуудсан дээр буулгахаас өмнө шифрлэх ёстой. Шифрлэлт нь дараахь зүйлээс бүрдэнэ энгийн хувиргалттэмдэгт бүрийг харгалзах HTML объектын нэрэнд харуулсны дагуу Java кодЖагсаалт 1-д харуулав.

Жагсаалт 1. Тэмдэгтүүдийг HTML объектын нэр рүү хөрвүүлэх нь нийтийн анги EscapeUtils ( public static final HashMap m = new HashMap(); static ( m.put(34, """); //< - меньше чем m.put(60, ""); // >--аас их //Хэрэглэгч бүгд таарах ёстой html объектуудхаргалзах аравтын бутархай утгатай. //Объектуудын аравтын бутархайн утгыг доорх хүснэгтэд харуулав) public static String escapeHtml() ( String str = "alert(\"abc\")"; оролдох ( StringWriter writer = new StringWriter((int) (str) .length() * 1.5)); escape(writer, str); System.out.println("кодлогдсон мөр нь " + writer.toString()); буцаах writer.toString(); ) catch (IOException ioe) ( ioe .printStackTrace() ; null буцаана; ) ) нийтийн статик хүчингүй зай (Writer writer, String str) нь IOException ( int len ​​= str.length(); for (int i = 0; i) шиддэг.< len; i++) { char c = str.charAt(i); int ascii = (int) c; String entityName = (String) m.get(ascii); if (entityName == null) { if (c >0x7F) ( writer.write(""); writer.write(Integer.toString(c, 10)); writer.write(";"); ) else ( writer.write(c); ) ) else ( зохиолч. бич (entityName); ))) ) )

Жагсаалт 1 дэх Java код нь "alert(\"abc\)" HTML мөрийг кодлодог. Дараах процедурыг ашиглана уу.

Үүний үр дүнд гаралт дээр дараах мөр гарч ирнэ: alert("abc") .

Хүснэгт 2-т HTML объектуудын аравтын бутархайн утгуудын зураглалыг харуулав.

Хүснэгт 2. HTML объектын аравтын утгууд Аравтын тоо Object Description
160 Хагардаггүй зай
60 < Түүнээс бага
62 > -аас илүү
38 & Амперсанд
162 ¢ цент
163 £ Lb
165 ¥ Жена
8364 евро
167 § Догол мөр
169 Зохиогчийн эрх
174 ® Бүртгэгдсэн барааны тэмдэг
8482 Барааны тэмдэг
Дүгнэлт

Сайт хоорондын скрипт шахах нь хэрэглэгчийн компьютерт халдах хамгийн түгээмэл аргуудын нэг юм. Гэсэн хэдий ч, та халдагчийн таны вэб програмыг хортой кодоор халдварлуулах чадварыг эрс багасгаж чадна. Програмаа бүтээхдээ эцсийн хэрэглэгчийн хөтөч рүү илгээхийн өмнө хуудасны гаралтын бүх утгыг шифрлэхээс болгоомжил.

Хянагчдаас хариу гаргаж байна

Хянагч хүсэлтийг боловсруулж дууссаны дараа ихэвчлэн хариу өгөх шаардлагатай болдог. Бид IController интерфэйсийг шууд хэрэгжүүлэх замаар доод түвшний хянагчийг бий болгохдоо үйлчлүүлэгчид хариу өгөх зэрэг хүсэлтийг боловсруулах бүх асуудлыг хариуцах ёстой.

Жишээлбэл, HTML хариултыг илгээхийн тулд та HTML өгөгдлийг үүсгэж, зохиож, Response.Write() аргыг ашиглан үйлчлүүлэгч рүү илгээх хэрэгтэй. Үүний нэгэн адил хэрэглэгчийн хөтчийг өөр URL руу шилжүүлэхийн тулд Response.Redirect() аргыг дуудаж, шаардлагатай URL-ыг дамжуулах шаардлагатай. Хоёр аргыг хоёуланг нь доорх кодонд харуулсан бөгөөд бидний өмнөх нийтлэлд IController интерфейсийг ашиглан үүсгэсэн BasicController ангийн өргөтгөлүүдийг харуулсан болно:

System.Web.Mvc ашиглах; System.Web.Routing ашиглах; namespace ControllersAndActions.Controllers ( нийтийн анги BasicController: IController ( public void Execute(RequestContext requestContext) ( string controller = (string)requestContext.RouteData.Values["controller"]; string action = (string)requestContext[RouteDataVluction. "]; хэрэв (action.ToLower() == "дахин чиглүүлэх") ( requestContext.HttpContext.Response.Redirect("/Derived/Index"); ) else ( requestContext.HttpContext.Response.Write(string.Format("Controller) : (0), Үйлдлийн арга: (1)", хянагч, үйлдэл)); ) ) ) )

Controller ангиас хянагчийг өвлөн авсан тохиолдолд ижил аргыг хэрэглэж болно. Execute() аргын дагуу requestContext.HttpContext.Response шинж чанарыг унших үед буцаах HttpResponseBase анги нь доорх жишээнд үзүүлсэн шиг Controller.Response шинж чанараар дамжуулан хандах боломжтой бөгөөд энэ нь мөн өмнө нь үүсгэсэн DerivedController классыг өргөтгөдөг. Controller ангиас өвлөн авсан:

Системийг ашиглах; System.Web ашиглах; System.Web.Mvc ашиглах; namespace ControllersAndActions.Controllers ( нийтийн анги DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index" ); else Response.Write("Хянагч: Гаргасан, Үйлдлийн арга: ProduceOutput"); ) ) )

ProduceOutput() арга нь Server.MachineName шинж чанарын утгыг ашиглан үйлчлүүлэгч рүү ямар хариу илгээхийг шийддэг. ("ProfessorWeb" нь миний хөгжүүлэлтийн машины нэр юм.)

Хэдийгээр хэрэглэгчдэд хариу өгөх энэ арга нь үр дүнтэй боловч үүнтэй холбоотой хэд хэдэн асуудал бий:

    Хянагчийн ангиуд нь тухай мэдээллийг агуулсан байх ёстой HTML бүтэцэсвэл URL, энэ нь ангиудыг унших, хадгалахад хэцүү болгодог.

    Гаралтад шууд хариу өгдөг хянагч нь нэгжийг шалгахад хэцүү байдаг. Та Response объектын хуурамч хэрэгжилтийг үүсгэж, дараа нь энэ нь юу болохыг тодорхойлохын тулд хянагчаас гарсан гаралтыг боловсруулах боломжтой болно. Энэ нь жишээ нь HTML тэмдэглэгээг задлан шинжлэх шаардлагатай гэсэн үг юм түлхүүр үгс, энэ нь урт бөгөөд уйтгартай үйл явц юм.

    Хариулт бүрийн жижиг нарийн ширийн зүйлийг ийм байдлаар боловсруулах нь төвөгтэй бөгөөд алдаа гаргахад хялбар байдаг. Зарим программистууд доод түвшний хянагч бүтээх замаар хангагдсан үнэмлэхүй хяналтад дуртай байдаг ч энэ нь ихэвчлэн маш хурдан төвөгтэй болдог.

Аз болоход, MVC Framework нь эдгээр бүх асуудлыг шийддэг тохиромжтой хэрэгсэлтэй байдаг - үйлдлийн үр дүн. Дараах хэсгүүдэд үйл ажиллагааны үр дүнгийн тухай ойлголтыг тайлбарлаж, үзүүлэв янз бүрийн арга замуудхянагчдаас хариу гаргахад ашигладаг.

Үйл ажиллагааны үр дүн

MVC Framework дахь үйл ажиллагааны үр дүнг зорилгын мэдэгдлийг зорилгоо биелүүлэхээс салгахад ашигладаг (тавтологийн төлөө уучлаарай). Нэгэнт л энэ ойлголт энгийн мэт санагдах боловч шууд бус байдлаас болж ойлгоход хэсэг хугацаа шаардагдана.

Үйлдлийн аргууд нь Response объекттой шууд харьцахын оронд хянагчаас ирэх хариу ямар байх ёстойг тайлбарлах ActionResult-аас гаралтай ангийн объектыг буцаана, тухайлбал, харагдац үзүүлэх эсвэл өөр URL эсвэл үйлдлийн арга руу чиглүүлэх. Гэсэн хэдий ч (энэ бол шууд бус байдал) хариултыг шууд үүсгэдэггүй. Үүний оронд MVC Framework нь үйлдлийн аргыг дуудсаны дараа үр дүнг гаргахын тулд ActionResult объектыг үүсгэдэг.

Үйлдлийн үр дүнгийн систем нь Командын дизайны загварын жишээ юм. Энэ загвар нь хийгдэж буй үйлдлүүдийг дүрсэлсэн объектуудыг хадгалах, дамжуулах хувилбаруудыг илэрхийлнэ.

MVC Framework нь үйлдлийн аргаас ActionResult объектыг хүлээн авах үед дууддаг ExecuteResult() арга, энэ объектын ангилалд тодорхойлсон. Үйлдлийн үр дүнгийн хэрэгжилт нь Response объект дээр ажиллаж, таны зорилгод нийцсэн гаралтыг бий болгоно. Үүнийг бодитоор харуулахын тулд Дэд бүтцийн хавтас үүсгэж, түүнд CustomRedirectResult.cs нэртэй шинэ ангиллын файлыг доорх жишээнд үзүүлсэн ActionResult-ийн өөрчлөн хэрэгжүүлэлтээр нэмье:

System.Web.Mvc ашиглах; namespace ControllersAndActions.Infrastructure ( нийтийн анги CustomRedirectResult: ActionResult ( нийтийн стринг Url ( авах; тохируулах; ) нийтийн хүчингүй болгох хүчингүй ExecuteResult(ControllerContext context) ( string fullUrl = UrlHelper.GenerateContentUrl(UrlHelper.GenerateContentUrl(UrlHelper.GenerateContentUrl(UrlTs.Context.Http)); шууд (fullUrl); )))

Энэ анги нь System.Web.Mvc.RedirectResult ангийн ажиллах аргад суурилдаг. Нээлттэй эхийн MVC Framework-ийн нэг давуу тал нь аливаа зүйлийн дотоод үйл ажиллагааг судлах чадвар юм. CustomRedirectResult анги нь MVC-тэй дүйцэх ангиас хамаагүй хялбар боловч энэ өгүүллийн зорилгод хангалттай.

RedirectResult классыг үүсгэх үед бид хэрэглэгчийг дахин чиглүүлэх URL хаягийг дамжуулдаг. Үйлдлийн арга дууссаны дараа MVC Framework гүйцэтгэх ExecuteResult() арга нь Хариулах объектхүрээгээр хангагдсан ControllerContext объектоор хүсэлт гаргах ба RedirectPermanent() арга эсвэл Redirect() аргыг дуудна (энэ нь өгүүллийн өмнөх жишээн дэх доод түвшний IController хэрэгжүүлэлт дотор хийгдсэн зүйлийг яг тусгасан болно).

CustomRedirectResult классын хэрэглээг доорх жишээн дээр харуулсан бөгөөд энэ нь Derived controller-д хийсэн өөрчлөлтүүдийг харуулж байна:

// ... ControllersAndActions.Infrastructure ашиглан; namespace ControllersAndActions.Controllers ( нийтийн анги DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( if (Server.MachineName == "MyMachineName") шинэ CustomRedirectResult/(UrsBa "(Uric/) буцаана. Index" ); else ( Response.Write("Controller: Derived, Action method: ProduceOutput"); return null; ) ) ) )

Бид ActionResult-г буцаахын тулд үйлдлийн аргын үр дүнг өөрчлөхөөс өөр аргагүй болсон гэдгийг анхаарна уу. Үйлдлийн арга маань хэрэгжиж байх үед MVC Framework ямар нэгэн зүйл хийхийг хүсэхгүй байвал бид null гэж буцаана. Энэ нь CustomRedirectResult жишээ буцаагдаагүй тохиолдолд хийсэн зүйл юм.

Нэгжийн туршилтын хянагч ба үйлдлүүд

MVC Framework-ийн олон хэсэг нь нэгжийн туршилтыг хөнгөвчлөх зорилготой бөгөөд энэ нь ялангуяа үйлдэл болон хянагчдад үнэн юм. Энэ дэмжлэгийн хэд хэдэн шалтгаан бий:

Та вэб серверээс гадуур үйлдэл болон хянагчийг туршиж үзэх боломжтой. Контекст объектууд нь үндсэн классуудаараа (HttpRequestBase гэх мэт) ханддаг бөгөөд үүнийг элэглэн дооглоход хялбар байдаг.

Үйлдлийн аргын үр дүнг шалгахын тулд та HTML тэмдэглэгээг задлан шинжлэх шаардлагагүй. Хүлээгдэж буй үр дүнгээ авч байгаа эсэхийг шалгахын тулд буцаасан ActionResult объектыг шалгаж болно.

Үйлчлүүлэгчийн хүсэлтийг эмуляци хийх шаардлагагүй. MVC Framework-ийн загвар холбох систем нь параметрт нь оролт хүлээн авах үйлдлийн аргуудыг бичих боломжийг олгодог. Үйлдлийн аргыг туршихын тулд та үүнийг шууд дуудаж, тохирох параметрийн утгыг өгөхөд хангалттай.

Хянагчдаас өгөгдөл үүсгэх ирээдүйн нийтлэлүүд нь янз бүрийн төрлийн үйлдлийн үр дүнгийн нэгжийн тестийг хэрхэн үүсгэхийг харуулах болно.

Нэгжийн туршилт нь зургийн зөвхөн нэг хэсэг гэдгийг бүү мартаарай. Үйлдлийн аргуудыг дараалан дуудах үед хэрэглүүр доторх нарийн төвөгтэй үйлдэл үүсдэг. Нэгжийн туршилт нь бусад туршилтын аргуудтай хослуулсан тохиолдолд хамгийн сайн ажилладаг.

Одоо та дахин чиглүүлэх үйлдлийн тусгай үр дүн хэрхэн ажилладагийг мэдэж байгаа тул MVC хүрээний санал болгож буй түүнтэй адилтгах хувилбар руу шилжих боломжтой бөгөөд энэ нь илүү хүчирхэг бөгөөд Microsoft-ын сайтар туршиж үзсэн. Үүсмэл контроллерт шаардлагатай өөрчлөлтийг доор өгөв.

// ... public ActionResult ProduceOutput() (шинэ RedirectResult("/Үндсэн/Индекс") буцаана); ) // ...

Үйлдлийн аргаас болзолт мэдэгдлийг хассан бөгөөд энэ нь програмыг ажиллуулж, /Derived/ProduceOutput гэх мэт URL руу шилжсэний дараа хөтчийг /Basic/Index гэх мэт URL руу дахин чиглүүлэх болно гэсэн үг юм. Үйлдлийн аргын кодыг хялбарчлахын тулд Controller анги нь янз бүрийн төрлийн ActionResult объектуудыг үүсгэх хялбар аргуудыг агуулдаг. Жишээлбэл, бид Redirect() аргын үр дүнг буцааснаар дээрх жишээн дээрхтэй ижил үр дүнд хүрч чадна:

// ... нийтийн ActionResult ProduceOutput() ( Redirect("/Basic/Index"); ) // ...

Үйлдлийн үр дүнгийн системд онцгой төвөгтэй зүйл байхгүй, гэхдээ энэ нь эцэст нь уншихад хялбар, илүү цэвэр, тууштай код гаргахад тусалдаг. Жишээлбэл, дахин чиглүүлэх тохиолдолд та үйлдлийн арга нь URL шинж чанар нь хүлээгдэж буй зорилтыг агуулсан RedirectResult жишээг буцаадаг эсэхийг шалгах боломжтой.

MVC Framework нь дараах хүснэгтэд тайлбарласан олон үйлдлийн үр дүнгийн төрлийг тодорхойлдог.

Баригдсан ActionResult төрлүүд Төрөл Тодорхойлолт Controller ангийн туслах аргууд
Үр дүнг харах

Заасан эсвэл стандарт харагдах загварыг үзүүлнэ

харах()
PartialViewResult

Заасан эсвэл стандарт хэсэгчилсэн харагдах загварыг үзүүлнэ

PartialView()
RedirectToRouteResult

Асуудал HTTP дахин чиглүүлэлт 301 эсвэл 302-г үйлдлийн арга эсвэл заасан маршрутын оруулга руу чиглүүлэх тохиргооны дагуу URL үүсгэх

RedirectToAction()
RedirectToActionPermanent()
RedirectToRoute()
RedirectToRoutePermanent()
RedirectResult

Өгөгдсөн URL руу HTTP 301 эсвэл 302 чиглүүлэлт гаргадаг

дахин чиглүүлэх()
RedirectPermanent()
ContentResult

Хөтөч рүү форматлагдаагүй текст өгөгдлийг буцаана, мөн агуулгын төрлийн толгой хэсгийг тохируулна

Агуулга()
FileResult

Хоёртын өгөгдлийг (диск дээрх файл эсвэл санах ой дахь байт массив гэх мэт) хөтөч рүү шууд дамжуулдаг

Файл()
JsonResult

.NET объектыг цуваа болгодог JSON форматмөн хариу болгон илгээдэг. Вэб API болон AJAX хэрэгслийг ашиглах үед ийм төрлийн хариултууд ихэвчлэн үүсдэг

Жсон()
JavaScript Үр дүн

Хэсэг илгээдэг эх кодХөтөчөөр ажиллах ёстой JavaScript

JavaScript()
HttpUnauthorizedResult

HTTP хариултын төлөвийн кодыг 401 ("зөвшөөрөгдөөгүй" гэсэн утгатай) болгож тохируулсан бөгөөд энэ нь нэвтрэлт таних механизмыг (маягтын нэвтрэлт танилт эсвэл Windows нэвтрэлт танилт) зочдод нэвтрэхийг сануулдаг.

Үгүй
HttpNotFoundResult

Буцах HTTP алдаа 404 кодтой - Олдсонгүй (олдсонгүй)

HttpNotFound()
HttpStatusCodeResult

Заасан HTTP кодыг буцаана

Үгүй
Хоосон үр дүн

Юу ч хийхгүй

Үгүй

Эдгээр бүх төрлүүд ActionResult ангиас үүсэлтэй бөгөөд тэдгээрийн олонх нь Controller ангилалд тохиромжтой туслах аргуудтай байдаг. Эдгээр төрлийн үр дүнгийн хэрэглээг бид дараагийн нийтлэлүүдэд харуулах болно.

Хүсэлтийн мессежийг хүлээн авч, тайлбарласны дараа сервер HTTP хариу мессежээр хариулна:

  • Статусын мөр
  • Тэг буюу түүнээс дээш толгойн талбар (Ерөнхий|Хариулт|Аж ахуйн нэгж) дараа нь CRLF
  • Толгойн талбаруудын төгсгөлийг харуулсан хоосон мөр (жишээ нь, CRLF-ийн өмнө юу ч байхгүй мөр)
  • Сонголтоор мессежийн биет
  • Дараах хэсэг тус бүр нь HTTP хариу мессежэнд ашиглагдаж буй нэгжүүдийг тайлбарладаг.

    Мессежийн статус-Мөр

    Status-Line нь протоколын хувилбар, дараа нь тоон статусын код болон холбогдох текст хэллэгээс бүрдэнэ. Элементүүд нь зайны SP тэмдэгтээр тусгаарлагдсан.

Status-Line = HTTP-хувилбар SP Статус-код SP шалтгаан-хэлбэр CRLF HTTP хувилбар

HTTP 1.1 хувилбарыг дэмждэг сервер нь дараах хувилбарын мэдээллийг буцаана:

HTTP-хувилбар = HTTP/1.1

Статусын код

Статус-кодын элемент нь 3 оронтой бүхэл тоо бөгөөд Статусын кодын эхний цифр нь хариултын ангиллыг тодорхойлдог бөгөөд сүүлийн хоёр цифр нь ангилах үүрэггүй. Эхний цифрийн хувьд 5 утга байна:

С.Н. Код ба тайлбар
1 1xx: Мэдээллийн

Энэ нь хүсэлтийг хүлээн авсан бөгөөд үйл явц үргэлжилж байна гэсэн үг юм.

2 2xx: Амжилт

Энэ нь үйлдлийг амжилттай хүлээн авч, ойлгож, хүлээн зөвшөөрсөн гэсэн үг юм.

3 3xx: Дахин чиглүүлэх

Энэ нь хүсэлтийг биелүүлэхийн тулд нэмэлт арга хэмжээ авах шаардлагатай гэсэн үг юм.

4 4xx: Үйлчлүүлэгчийн алдаа

Энэ нь хүсэлт нь буруу синтакс агуулсан эсвэл биелүүлэх боломжгүй гэсэн үг юм.

5 5xx: Серверийн алдаа

Энэ нь сервер хүчинтэй хүсэлтийг биелүүлж чадаагүй гэсэн үг.

HTTP статусын кодууд нь өргөтгөх боломжтой бөгөөд бүртгэгдсэн бүх статус кодын утгыг ойлгохын тулд HTTP програмууд шаардлагагүй. Бүх статус кодын жагсаалтыг тусдаа бүлэгт өгсөн болно чиний төлөөлавлагаа.

Хариултын толгой хэсгийн талбарууд

Бид HTTP толгойн талбаруудыг сурахдаа General-header болон Entity-header-ийг тусдаа бүлэгт судлах болно. Одоогоор Response толгой хэсгийн талбарууд гэж юу болохыг шалгацгаая.

Хариулт-толгой талбарууд нь серверт статусын мөрөнд байршуулах боломжгүй хариултын талаарх нэмэлт мэдээллийг дамжуулах боломжийг олгодог. Эдгээр толгой талбарууд нь серверийн тухай мэдээлэл болон Request-URI-ээр тодорхойлсон нөөцөд цаашдын хандалтын талаарх мэдээллийг өгдөг.

  • Proxy-Authenticate

  • WWW - Баталгаажуулах

Хэрэв та өөрийн хувийн Вэб Клиент болон Сервер бичих гэж байгаа бол өөрийн хувийн талбаруудыг танилцуулж болно.

Хариултын мессежийн жишээ

Одоо "hello.htm" хуудсыг дуудах хүсэлтийн HTTP хариуг бүрдүүлэхийн тулд бүгдийг нэгтгэж үзье. вэб серверсайт дээр ажиллаж байна

HTTP/1.1 200 OK Огноо: Даваа, 2009 оны 7-р сарын 27 12:28:53 GMT Сервер: Apache/2.2.14 (Win32) Сүүлд өөрчилсөн: 2009 оны 7-р сарын 22, Лхагва 19:15:56 GMT Агуулгын урт: 88 Агуулга Төрөл: text/html Холболт: Хаалттай Сайн байна уу, Дэлхий!

Дараах жишээ нь вэб сервер хүссэн хуудсыг олж чадаагүй үед алдааны нөхцөлийг харуулсан HTTP хариу мессежийг харуулж байна:

HTTP/1.1 404 Олдсонгүй Огноо: Ням, 2012 оны 10-р сарын 18 10:36:20 GMT Сервер: Apache/2.2.14 (Win32) Агуулгын урт: 230 Холболт: Хаалттай контент-төрөл: текст/html; charset=iso-8859-1 404 Олдсонгүй Олдсонгүй

Хүссэн URL /t.html энэ серверээс олдсонгүй.

Өгөгдсөн HTTP хүсэлтэд вэб сервер буруу HTTP хувилбартай тулгарсан үед алдааны нөхцөлийг харуулсан HTTP хариу мессежийн жишээг доор харуулав.

HTTP/1.1 400 Муу СаналОгноо: 2012 оны 10-р сарын 18-ны Ням гараг 10:36:20 GMT Сервер: Apache/2.2.14 (Win32) Агуулгын урт: 230 Контентын төрөл: текст/html; charset=iso-8859-1 Холболт: Хаалттай 400 Буруу хүсэлт Буруу хүсэлт

Таны хөтөч энэ сервер ойлгохгүй хүсэлт илгээсэн.

Хүсэлтийн мөрөнд протоколын мөрийн дараах хүчингүй тэмдэгтүүд орсон байна.