如果您訪問一個aspx web表單,然後單擊提交按鈕導致POST到服務器,然後在收到第一個POST的響應之前再次單擊提交導致第二個POST,響應方面會發生什麼?服務器是否同時或串行處理兩個請求?服務器是否發送了兩個響應?瀏覽器是否忽略了其中一個響應?在回答上述問題之後,這可能是不言自明的,但如果我要調用Response.Clear();到Response.End();對於第二個請求,瀏覽器端會發生什麼?IE收到的重複郵件的回覆是什麼?
回答
如果在服務器端沒有特殊的手段來處理多個POST,服務器將獨立處理這兩個請求。無論在處理併發 - 這取決於:
- ,如果你的第一篇文章導致整個頁面重新加載那麼就不可能觸發第二POST在服務器端進行處理頁面之前(因爲你的第二次點擊是從已經在客戶端的頁面創建的)
- 如果您的第一次POST導致AJAX POST發送到服務器,並且處理過程需要一些時間在服務器上,那麼您最終可能會得到兩個相同的POSTS在服務器端同時處理頁面
服務器總是發送響應和瀏覽器不要忽視他們。它是您的代碼,在服務器端或在客戶端,以防止這種意外的多個POST,例如,通過302響應到另一個不允許用戶重新放置表單的位置。
具體而言,如果您只是清除響應(發送空白內容)並且內容類型爲text/html
,那麼瀏覽器將呈現空白頁面。
我會說這些事情都可能發生,具體取決於具體時間。
我相信調用Response.Clear();到Response.End();在第二個請求上會導致瀏覽器收到一個空的響應,可能在收到第一個請求的結果後。
看起來就像我的情況,當我打電話回來;在第二次請求時,瀏覽器放棄或忽略或不接收來自第一請求的響應,並且僅獲得第二次請求。 – xr280xr 2012-02-08 23:18:30
由於緩衝和網絡的原因,瀏覽器可能會在第一個響應之前收到第二個響應。 – 2012-02-09 14:00:31
- 1. 爲什麼我的Appengine收到的電子郵件重複?
- 2. sinch messaging APi收到重複郵件
- 3. wait_fences:未能收到回覆:10004003 - 什麼?
- 4. Laravel的回覆是什麼?
- 5. 爲什麼郵件主題在MailGun的HTTP郵件中重複?
- 6. Magento收到的郵件(回覆)到錯誤的電子郵件SMTP問題?
- 7. 發送郵件到我的收件箱,但回覆給用戶
- 8. 確定郵件是否已回覆到
- 9. 回覆郵件
- 10. 如何停止接收重複郵件?
- 11. 如何回覆從AWS SNS服務收到的電子郵件?
- 12. 通過SES收到的SES自動回覆電子郵件
- 13. 自動處理收到的電子郵件併發送回復
- 14. 用戶從Peoplesoft收到重複的郵件
- 15. 回覆收到的短信
- 16. 什麼是自動回覆?
- 17. 什麼是Rhino Mocks重複?
- 18. ActiveMQ上的重複郵件
- 19. 什麼是sre_constants.error:什麼都不重複
- 20. 爲什麼我會收到「重複的本地變量」錯誤?
- 21. 爲什麼回覆我的SMTP發送的Gmail郵件不是線程化的?
- 22. TeamCity的重複查找器的重複複雜度設置是什麼單位?
- 23. 爲什麼重複的郵件被記錄
- 24. Hangman是什麼部分重複的信
- 25. Android鬧鐘中的重複是什麼?
- 26. 什麼是TextSurface的重複模式?
- 27. 使用AppleScript重定向電子郵件時,電子郵件的內容是重複的。爲什麼?
- 28. gmail api:回覆電子郵件已經在vb.net的收件箱
- 29. 收件人的回覆電子郵件地址
- 30. 區分每封郵件的「回覆」按鈕的好方法是什麼?
「如果您的第一次POST會導致整個頁面重新加載,那麼在頁面在服務器端處理之前不可能觸發第二次POST」對於我來說,如果您單擊提交按鈕然後按f5在收到響應之前重新加載,它會再次發佈相同的表單。我已經看過使用[PRG](http://en.wikipedia.org/wiki/Post/Redirect/Get)模式,但我不明白這是如何消除用戶在響應之前重新提交的問題接收。如果您查看圖表,則在用戶刷新過程中,他們所做的所有更改都會更改。 – xr280xr 2012-01-31 22:08:28
我問的原因是我有一個表單,它被點擊後禁用提交按鈕,但我試圖建立在服務器端的故障安全。雖然不完美,但我所做的是在第一次加載時向頁面添加令牌。回發時,檢查令牌是否處於會話狀態,如果不是,則添加並繼續。如果是這樣,我想忽略這個請求。儘管如此,我仍然需要瀏覽器接收來自第一個初始請求的響應,但我仍然不清楚它是否會。謝謝你的幫助。 – xr280xr 2012-01-31 22:10:55
有人可以告訴我,如果我禁用此按鈕的方式將以任何方式允許重複回發? '的' '函數OnProcessing(按鈕)// { //檢查客戶端驗證是否在禁用之前通過 button.disabled = true; window.external。OnPaymentProcessing(); }' 我們正在繼續使用它看到重複回傳的證據。 –
xr280xr
2012-02-08 23:16:36