亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides Access control CORS Authentication Browser detection using the user agent Caching Caching FAQ Compression Conditional requests Connection management in HTTP 1.x Content negotiation Content negotiation: List of default Accept values Cookies CSP Messages Overview Protocol upgrade mechanism Proxy servers and tunneling Proxy servers and tunneling: Proxy Auto-Configuration (PAC) file Public Key Pinning Range requests Redirections Resources and specifications Resources and URIs Response codes Server-Side Access Control Session Guides: Basics Basics of HTTP Choosing between www and non-www URLs Data URIs Evolution of HTTP Identifying resources on the Web MIME Types MIME types: Complete list of MIME types CSP Content-Security-Policy Content-Security-Policy-Report-Only CSP: base-uri CSP: block-all-mixed-content CSP: child-src CSP: connect-src CSP: default-src CSP: font-src CSP: form-action CSP: frame-ancestors CSP: frame-src CSP: img-src CSP: manifest-src CSP: media-src CSP: object-src CSP: plugin-types CSP: referrer CSP: report-uri CSP: require-sri-for CSP: sandbox CSP: script-src CSP: style-src CSP: upgrade-insecure-requests CSP: worker-src Headers Accept Accept-Charset Accept-Encoding Accept-Language Accept-Ranges Access-Control-Allow-Credentials Access-Control-Allow-Headers Access-Control-Allow-Methods Access-Control-Allow-Origin Access-Control-Expose-Headers Access-Control-Max-Age Access-Control-Request-Headers Access-Control-Request-Method Age Allow Authorization Cache-Control Connection Content-Disposition Content-Encoding Content-Language Content-Length Content-Location Content-Range Content-Type Cookie Cookie2 Date DNT ETag Expect Expires Forwarded From Headers Host If-Match If-Modified-Since If-None-Match If-Range If-Unmodified-Since Keep-Alive Large-Allocation Last-Modified Location Origin Pragma Proxy-Authenticate Proxy-Authorization Public-Key-Pins Public-Key-Pins-Report-Only Range Referer Referrer-Policy Retry-After Server Set-Cookie Set-Cookie2 SourceMap Strict-Transport-Security TE Tk Trailer Transfer-Encoding Upgrade-Insecure-Requests User-Agent User-Agent: Firefox Vary Via Warning WWW-Authenticate X-Content-Type-Options X-DNS-Prefetch-Control X-Forwarded-For X-Forwarded-Host X-Forwarded-Proto X-Frame-Options X-XSS-Protection Methods CONNECT DELETE GET HEAD Methods OPTIONS PATCH POST PUT Status 100 Continue 101 Switching Protocols 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Payload Too Large 414 URI Too Long 415 Unsupported Media Type 416 Range Not Satisfiable 417 Expectation Failed 426 Upgrade Required 428 Precondition Required 429 Too Many Requests 431 Request Header Fields Too Large 451 Unavailable For Legal Reasons 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported 511 Network Authentication Required Status
characters

URL重定向或URL轉(zhuǎn)發(fā)是一種保持鏈接處于活動(dòng)狀態(tài)的技術(shù),而實(shí)際資源(作為頁(yè)面,表單或整個(gè)Web應(yīng)用程序)位于不同的URL上。HTTP提供了一種特殊類型的響應(yīng)(HTTP重定向),用于執(zhí)行用于多種目的的此操作:正在進(jìn)行站點(diǎn)維護(hù)時(shí)的臨時(shí)重定向,在站點(diǎn)體系結(jié)構(gòu)更改后保持外部鏈接正常工作的永久重定向,上載文件時(shí)的進(jìn)度頁(yè),還有很多 …

原理

在HTTP中,服務(wù)器通過(guò)向請(qǐng)求發(fā)送特殊響應(yīng)來(lái)重定向重定向。HTTP重定向是狀態(tài)碼為的響應(yīng)3xx。瀏覽器在收到重定向響應(yīng)時(shí),會(huì)使用提供的新網(wǎng)址并立即加載該網(wǎng)址:大多數(shù)情況下,重定向?qū)τ脩魜?lái)說(shuō)都是透明的,除此之外性能下降很小。

有幾種類型的重定向,它們分為三類:永久性,臨時(shí)性和特殊重定向。

永久重定向

這些重定向意味著永遠(yuǎn)持續(xù)下去。他們暗示原來(lái)的網(wǎng)址不應(yīng)該再使用,并且新的網(wǎng)址是首選。搜索引擎機(jī)器人會(huì)觸發(fā)其索引中相關(guān)資源的URL更新。

Code

Text

Method handling

Typical use case

301

Moved Permanently

GET methods unchanged. Others may or may not be changed to GET.1

Reorganization of a Web site.

308

Permanent Redirect

Method and body not changed.

Reorganization of a Web site, with non-GET links/operations.

1規(guī)范沒(méi)有意圖允許更改方法,但實(shí)際上有用戶代理在這里執(zhí)行此操作。308已被創(chuàng)建以消除使用非GET方法時(shí)行為的不明確性。

臨時(shí)重定向

有時(shí),所請(qǐng)求的資源無(wú)法從其規(guī)范位置訪問(wèn),但可以從其他位置訪問(wèn)。在這種情況下,可以使用臨時(shí)重定向。搜索引擎機(jī)器人不會(huì)記住新的臨時(shí)鏈接。在創(chuàng)建,更新和刪除資源以呈現(xiàn)臨時(shí)進(jìn)度頁(yè)面時(shí),也會(huì)使用臨時(shí)重定向。

文本

方法處理

典型的用例

302

發(fā)現(xiàn)

GET方法不變。其他可能會(huì)或可能不會(huì)更改為GET.2

該網(wǎng)頁(yè)暫時(shí)無(wú)法使用,原因尚未預(yù)見(jiàn)。這樣,搜索引擎不會(huì)更新他們的鏈接。

303

見(jiàn)其他

GET方法不變。其他人更改為GET(身體丟失)。

用于在PUT或POST之后重定向,以防止重新觸發(fā)操作的頁(yè)面刷新。

307

臨時(shí)重定向

方法和主體沒(méi)有改變

該網(wǎng)頁(yè)暫時(shí)無(wú)法使用,原因尚未預(yù)見(jiàn)。這樣,搜索引擎不會(huì)更新他們的鏈接。當(dāng)網(wǎng)站上的非GET鏈接/操作可用時(shí),優(yōu)于302。

2規(guī)范沒(méi)有意圖允許方法改變,但實(shí)際上有用戶代理在那里做這個(gè)。307已被創(chuàng)建以消除使用非GET方法時(shí)行為的不明確性。

特殊的重定向

除了這些通常的重定向之外,還有兩個(gè)特定的重定向。的304(沒(méi)有改變)一個(gè)頁(yè)面到本地緩存的副本(這是陳舊的)重定向,以及300(可多選)是手動(dòng)重定向:身體,由瀏覽器作為網(wǎng)頁(yè)呈現(xiàn),列出了可能的重定向和用戶點(diǎn)擊一個(gè)選擇它。

文本

典型的用例

300

多項(xiàng)選擇

并不多:這些選擇被列在正文的HTML頁(yè)面中。可以提供200 OK狀態(tài)。

304

未修改

緩存刷新:這表示緩存值仍然是新鮮的可以使用。

指定重定向的替代方法

HTTP重定向不是定義重定向的唯一方法。還有其他兩種方法:使用<meta>元素的HTML重定向,以及使用DOM的 JavaScript重定向。

HTML重定向

HTTP重定向是創(chuàng)建重定向的首選方式,但有時(shí)Web開(kāi)發(fā)人員無(wú)法控制服務(wù)器或無(wú)法對(duì)其進(jìn)行配置。對(duì)于這些特殊情況下,Web開(kāi)發(fā)人員可以用一門(mén)手藝的HTML頁(yè)面<meta>元素和http-equiv設(shè)置屬性refresh<head>頁(yè)面。當(dāng)顯示頁(yè)面時(shí),瀏覽器會(huì)找到這個(gè)元素并且會(huì)轉(zhuǎn)到指定的頁(yè)面。

<head> 
  <meta http-equiv="refresh" content="0; URL=http://www.example.com/" /></head>

content屬性以一個(gè)數(shù)字開(kāi)頭,表示瀏覽器在重定向到給定URL之前等待多少秒。始終將其設(shè)置0為更好的可訪問(wèn)性。

顯然,這種方法只適用于HTML頁(yè)面(或類似的),不能用于圖像或任何其他類型的內(nèi)容。

請(qǐng)注意,這些重定向會(huì)破壞瀏覽器中的后退按鈕:您可以返回到帶有此標(biāo)題的頁(yè)面,但它會(huì)立即再次向前移動(dòng)。

JavaScript重定向

JavaScript中的重定向是通過(guò)為window.location屬性設(shè)置一個(gè)值并加載新頁(yè)面來(lái)創(chuàng)建的。

window.location = "http://www.example.com/";

與HTML重定向一樣,這不能適用于所有資源,顯然這只會(huì)在執(zhí)行JavaScript的客戶端上起作用。另一方面,有更多的可能性,例如,只有滿足一些條件時(shí)才能觸發(fā)重定向。

優(yōu)先順序

對(duì)于URL重定向有三種可能性,可以同時(shí)指定幾種方法,但首先應(yīng)用哪一種??jī)?yōu)先順序如下:

  1. 當(dāng)甚至沒(méi)有傳輸頁(yè)面時(shí),HTTP重定向總是首先執(zhí)行,當(dāng)然甚至沒(méi)有讀取。

  1. <meta>如果沒(méi)有任何HTTP重定向,則執(zhí)行HTML重定向()。

  1. 只有在客戶端啟用JavaScript的情況下,JavaScript重定向才是最后的手段。

如果可能,請(qǐng)始終嘗試使用HTTP重定向,并且不要使用<meta>元素。如果開(kāi)發(fā)人員更改HTTP重定向并忘記HTML重定向,則重定向不再相同,或者以無(wú)限循環(huán)結(jié)束,或發(fā)生其他噩夢(mèng)。

用例

有很多用于重定向的用例,但由于每次重定向都會(huì)影響性能,所以它們的使用應(yīng)該保持在最低限度。

域別名

理想情況下,一個(gè)資源有一個(gè)位置,因此有一個(gè)URL。但是有理由希望有一個(gè)資源的替代名稱(幾個(gè)域名,比如有或沒(méi)有www前綴,或者更短和易記的URL,...)。在這些情況下,不要復(fù)制資源,而是使用重定向到一個(gè)真正的(規(guī)范)URL是有用的。

出于以下幾個(gè)原因可以完成域別名化:

  • 擴(kuò)大您網(wǎng)站的覆蓋面。一個(gè)常見(jiàn)的情況是,當(dāng)您的網(wǎng)站位于www.example.com域名下時(shí),您也example.com應(yīng)該可以訪問(wèn)您的網(wǎng)頁(yè)。在這種情況下設(shè)置example.com頁(yè)面的重定向www.example.com。您也可能會(huì)提供常用的同義詞名稱,或經(jīng)常輸入您的域名的拼寫(xiě)錯(cuò)誤。

  • 轉(zhuǎn)移到其他域。例如,您的公司已被重新命名,當(dāng)您搜索舊名稱時(shí),您希望習(xí)慣了舊公司網(wǎng)站的用戶仍能以新名稱找到您。

  • 強(qiáng)制HTTPS。對(duì)您網(wǎng)站的HTTP版本的請(qǐng)求將被重定向到您網(wǎng)站的HTTPS版本。

保持鏈接活著

當(dāng)您重新組織網(wǎng)站時(shí),資源的URL會(huì)發(fā)生變化。即使您可以更新網(wǎng)站的內(nèi)部鏈接以匹配新的命名方案,也無(wú)法控制外部資源使用的URL。你不想破壞這些鏈接,因?yàn)樗鼈優(yōu)槟銕?lái)有價(jià)值的用戶(并幫助你的搜索引擎優(yōu)化),所以你設(shè)置了從舊網(wǎng)址到新網(wǎng)址的重定向。

即使這種技術(shù)也適用于內(nèi)部鏈接,您應(yīng)該盡量避免內(nèi)部重定向。重定向具有顯著的性能成本(因?yàn)轭~外的HTTP請(qǐng)求已完成),如果可以通過(guò)更正內(nèi)部鏈接來(lái)避免它,則應(yīng)修復(fù)這些鏈接。

對(duì)不安全請(qǐng)求的臨時(shí)響應(yīng)

不安全的請(qǐng)求修改服務(wù)器的狀態(tài),用戶不應(yīng)無(wú)意中重播它們。通常情況下,你不希望你的用戶重新發(fā)送PUT,POSTDELETE請(qǐng)求。如果您只是作為此請(qǐng)求的結(jié)果提供響應(yīng),則只需簡(jiǎn)單按下重新加載按鈕(可能在確認(rèn)消息之后),重新發(fā)送請(qǐng)求。

在這種情況下,服務(wù)器可以發(fā)回303包含正確信息的(請(qǐng)參閱其他)響應(yīng),但如果按下重新加載按鈕,則只會(huì)重新顯示此頁(yè)面,而不會(huì)重播不安全的請(qǐng)求。

針對(duì)長(zhǎng)時(shí)間請(qǐng)求的臨時(shí)響應(yīng)

某些請(qǐng)求可能需要更多時(shí)間在服務(wù)器上,例如有時(shí)DELETE請(qǐng)求被安排用于稍后處理。在這種情況下,響應(yīng)是一個(gè)303(請(qǐng)參見(jiàn)其他)重定向,該重定向鏈接到指示該操作已安排的頁(yè)面,并最終通知有關(guān)進(jìn)度或允許取消該進(jìn)度。

在通用服務(wù)器中配置重定向

阿帕奇

重定向可以在服務(wù)器配置文件中或.htaccess每個(gè)目錄中設(shè)置。

所述mod_alias中模塊具有RedirectRedirect_Match該設(shè)置了指令302(默認(rèn))的反應(yīng):

<VirtualHost *:80>
	ServerName example.com
	Redirect / http://www.example.com</VirtualHost>

該URL http://example.com/將被重定向到http://www.example.com/(但不是http://example.com/other.html

Redirect_Match 做同樣的事情,但需要一個(gè)正則表達(dá)式來(lái)定義受影響的URL集合:

RedirectMatch ^/images/(.*)$ http://images.example.com/$1

images/文件夾中的所有文檔都將重定向到不同的域。

如果您不想設(shè)置臨時(shí)重定向,則可以使用額外參數(shù)(要使用的HTTP狀態(tài)碼或permanent關(guān)鍵字)來(lái)設(shè)置不同的重定向:

Redirect permanent / http://www.example.com
Redirect 301 / http://www.example.com

該mod_rewrite的模塊也可以用來(lái)創(chuàng)建重定向。它更靈活,但使用起來(lái)更復(fù)雜一些。

Nginx

在Nginx中,您為要重定向的內(nèi)容創(chuàng)建特定的服務(wù)器塊:

server {
	listen 80;
	server_name example.com;return 301 $scheme://www.example.com$request_uri;}

要僅將重定向應(yīng)用于文件夾或頁(yè)面的子集,請(qǐng)使用以下rewrite指令:

rewrite ^/images/(.*)$ http://images.example.com/$1 redirect;rewrite ^/images/(.*)$ http://images.example.com/$1 permanent;

IIS

在IIS中,您使用該<httpRedirect>元素來(lái)配置重定向。

重定向循環(huán)

當(dāng)連續(xù)的重定向遵循已經(jīng)遵循的重定向時(shí),重定向循環(huán)發(fā)生。換句話說(shuō),有一個(gè)永遠(yuǎn)不會(huì)完成的循環(huán),最終不會(huì)找到任何頁(yè)面。

大多數(shù)情況下,這是一個(gè)服務(wù)器問(wèn)題,如果服務(wù)器無(wú)法檢測(cè)到,它會(huì)發(fā)回一個(gè)500 Internal Server Error。如果在修改服務(wù)器配置后很快遇到這樣的錯(cuò)誤,這可能是重定向循環(huán)。

有時(shí)候,服務(wù)器不會(huì)檢測(cè)到它:重定向循環(huán)可以分布在幾臺(tái)服務(wù)器上,每臺(tái)服務(wù)器都沒(méi)有完整的圖像。在這種情況下,瀏覽器會(huì)檢測(cè)到它并發(fā)布錯(cuò)誤消息。Firefox將顯示:

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

而Chrome會(huì)顯示:

This Webpage has a redirect loop

在這兩種情況下,用戶都無(wú)法做很多事情(除非他們身上發(fā)生了腐敗現(xiàn)象,例如緩存或Cookie不匹配)。

避免重定向循環(huán)很重要,因?yàn)樗鼈兺耆茐牧擞脩趔w驗(yàn)。

在MDN上編輯此頁(yè)面

Previous article: Next article: