跳到主要內容

發表文章

目前顯示的是 2月, 2015的文章

收到未預期的重複 HTTP Request

參考文章: What happens when no response is received for a request? 最近碰上的一個問題是後端接收到重覆的 request 在前端的JavaScript留下的 log 也確認送出的 request 只有一個 那麼後端收到重複的 request 的原因反而令人困惑 其實這個問題的原因我在之前就聽過類似的例子 不過直到這次採到痛點才又回想起來 也多虧於此,沒花太多時間就克服了這個問題 根據  HTTP 1.1 RFC 8.2.4 的協定 If an HTTP/1.1 client sends a request which includes a request body, but which does not include an Expect request-header field with the “100-continue” expectation, and if the client is not directly connected to an HTTP/1.1 origin server, and if the client sees the connection close before receiving any status from the server, the client SHOULD retry the request. 也就是HTTP裡有著上述的規範 當 Server 接收了 request 後,理所當然的需要吐出 response 瀏覽器端使用了 Collision Avoidance 的規則 當超過一定時間沒有接收到 response 後,會自動重發 request 所以就會有 JavaScript 的 log 紀錄只有發出一個 request,但 Server 卻收到很多個的狀況 如果後端的頁面需要進行一項長時間的作業 就算你送出這個 request 後並不需要取得任何回應內容也一樣 考量到瀏覽器需要在一定時間內得到回應,那麼可以採取的方式有兩種 第一種就是強迫頁面 flush buffer,先吐些東西讓瀏覽器能接收 當然在這個狀況下,如何讓瀏覽器接收後續的內容就是另一個問題 第二種則是將需要進行長時間作業的部份另外開一個 Th