在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ response.setStatus的原理問題

response.setStatus的原理問題

springMvc 處理HttpRepsonse時(shí) 同時(shí)設(shè)置response.setStatus(301)response.sendRedirect("/hello");時(shí),HTTP response Headers status is 302

調(diào)換兩個(gè)的位置也是如此,所以想理解下具體的原理

相關(guān)代碼

  //input
  response.sendRedirect("/hello");
  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
// output
Request URL: http://localhost:9999/account/list
Request Method: GET
Status Code: 302 
Remote Address: [::1]:9999
Referrer Policy: no-referrer-when-downgrade
HTTP/1.1 302
Location: http://localhost:9999/hello
Content-Length: 0
Date: Sun, 29 Jul 2018 17:38:31 GMT
回答
編輯回答
玩控

你觀察一下名字 sendRedirectsetStatus. send是發(fā)送, sendRedirect會(huì)直接將響應(yīng)發(fā)送給用戶, 所以你后續(xù)在設(shè)置響應(yīng)的狀態(tài)碼已經(jīng)沒用了, 響應(yīng)已經(jīng)發(fā)回給客戶端了.

2018年8月7日 21:45
編輯回答
情皺

根據(jù)問題描述,sendRedirect中的實(shí)現(xiàn)應(yīng)該是這樣的

function sendRedirect(url) {
    this.statusCode = 302;
    this.setHeader('Location', url);
}

而setStatus的實(shí)現(xiàn)是這樣的

function setStatus(code) {
    if(!this.statusCode) {
        this.statusCode = code;
    }
}
2018年9月17日 01:12
編輯回答
陌離殤

沒用過springMVC ,估計(jì)這個(gè)302是sendRedirect 里面發(fā)送的嗎,去看一下這個(gè)函數(shù)的源碼,就知道了

2018年3月16日 18:12