Skirtumas tarp HTTP peradresavimo kodų

Skirtumai tarp įvairių „HTTP 3XX“ nukreipimo kodų man nėra aiškūs. Taip, perskaičiau specifikaciją, tačiau atrodo, kad yra tam tikras skirtumas tarp standartinės ir faktinės praktikos.

301 peradresavimo kodas atrodo pakankamai aiškus: tai reiškia, kad išteklius visam laikui perkeltas į kitą URI, o būsimi prašymai turėtų naudoti šį URI.

Ir 307 peradresavimo kodas taip pat atrodo aiškus: tai reiškia, kad peradresavimas yra laikinas, o ateities užklausos vis tiek turėtų naudoti pradinį URI.

Bet aš negaliu pasakyti, koks yra skirtumas tarp 302 ir 303 , arba kodėl jie tarp jų tikrai skiriasi nuo 301 . Atrodo, kad 302 iš pradžių buvo skirtas laikinai peradresuoti (pvz., 307 ), tačiau praktiškai dauguma naršyklių ją laikė 303 . Bet koks yra skirtumas tarp 303 ir 301 ? Ar manoma, kad 301 reiškia, kad nukreipimas yra nuolatinis?

126
22 янв. nustatė Channel72 Jan 22 2011-01-22 01:06 '11 at 1:06 2011-01-22 01:06
@ 2 atsakymai
  • 301 : nuolatinis nukreipimas. Klientai, pateikę vėlesnius prašymus šiam ištekliui, turi naudoti naują URI. Klientai neturėtų automatiškai nukreipti į POST / PUT / DELETE užklausas.
  • 302 : peradresavimas dėl neapibrėžtos priežasties. Klientai, pateikę vėlesnius prašymus dėl šio šaltinio, turi naudoti ne naują URI. Klientai neturėtų automatiškai nukreipti į POST / PUT / DELETE užklausas.
  • 303 : peradresavimas dėl neapibrėžtos priežasties. Paprastai „Atlikta operacija tęsiama kitur“. Klientai, pateikę vėlesnius prašymus dėl šio šaltinio, turi naudoti ne naują URI. Klientai turėtų vadovautis POST / PUT / DELETE užklausų peradresavimu, bet naudodami GET paskesniam prašymui .
  • 307 : laikinas nukreipimas. Išteklius gali grįžti į šią vietą vėliau. Klientai, pateikę vėlesnius prašymus į šį šaltinį, turi naudoti seną URI. Klientai neturėtų automatiškai nukreipti į POST / PUT / DELETE užklausas.

Aš asmeniškai rekomenduoju vengti 302, jei turite pasirinkimą. Kai kurie klientai nesilaiko specifikacijos, kai susiduria su 302. Pageidaujamas 307-303, jei jums nereikia alternatyvaus elgesio POST / PUT / DELETE.

111
22 янв. Atsakymą pateikė Bobas Amanas sausio 22 d 2011-01-22 01:24 '11 prie 1:24 2011-01-22 01:24

Skirtumas tarp 303 ir 307 yra toks:

303 : matyti kitus. Prašymas buvo gautas teisingai, tačiau rezultatai turėtų būti gauti naudojant peradresavimo URL GET.

307 : laikinas nukreipimas. Visas prašymas turi būti nukreiptas į naują URL. Bet kokie pašto duomenys turi būti dar kartą pateikti.

Atkreipkite dėmesį, kad 302 turėjo turėti 307 elgesį, tačiau dauguma naršyklių ją įgyvendino kaip 303 elgesį (abu jie neegzistavo). Todėl šie du nauji kodai buvo įvesti siekiant pakeisti 302.

border=0

Skirtumas tarp 301 ir 303:

301 . Dokumentas perkeltas. Ateities užklausose turėtų būti naudojamas naujas URL. Šis URL yra pasenęs.

Pastaba Būkite atsargūs su šiuo kodu. Naršyklės ir tarpiniai serveriai paprastai naudoja labai agresyvų talpyklą, todėl, jei atsakysite į 301, gali prireikti daug laiko, kol kas nors peržiūrės šį URL.

303 . Prašymas gautas teisingai. Visi PUT prašymai apdorojami. Gautą dokumentą galima gauti iš peradresavimo URL. Būsimas prašymas vis tiek turi būti nukreiptas į pradinį URL.

64
22 янв. atsakymą pateikė GolezTrol, sausio 22 d 2011-01-22 01:26 '11 ne 1:26 2011-01-22 01:26

Kiti klausimai apie „ žymų arba Užduoti klausimą