ASBai
February 22, 2018, 3:00pm
15
I read the 1.8.4 release announce ([ANNOUNCE] haproxy-1.8.4 ) and found this:
several H2 minor issues (DATA padding incorrectly accounted for in
the connection window, DATA frames for closed streams not properly
accounted, RST sometimes in response to an RST ). None of them has
a real visible impact in practice so I preferred to issue 1.8.4
first to address the pending issues.
So it seems a “already known issue” and may be fixed on 1.8.5+ ?
jdyke
February 22, 2018, 9:37pm
16
I think the only good solution for this is to have your service listen on two different ports, one that listens to HTTP1.X and one that listens to H/2
I’m in a similar situation where i have to support older browsers. I have HAProxy in front of nginx which listens on 80 and 81 (SSL Terminates at HAProxy) andd then a simple decider config would look like:
frontend https
mode tcp
bind 0.0.0.0:443 ssl crt /etc/haproxy/certs alpn h2,http/1.1 ecdhe secp384r1
timeout http-request 10s
#send all HTTP/2 traffic to a specific backend
use_backend http2-nodes if { ssl_fc_alpn -i h2 }
#send HTTP/1.1 and HTTP/1.0 to default, which don't speak HTTP/2
default_backend http1-nodes
backend http1-nodes
mode http
balance roundrobin
default-server inter 1s fall 2
server web01 1.1.1.12:80 check send-proxy
server web03 1.1.1.14:80 check send-proxy
backend http2-nodes
mode tcp
balance roundrobin
default-server inter 1s fall 2
server web01 1.1.1.12:81 check send-proxy
server web03 1.1.1.14:81 check send-proxy
Then in Nginx you define two ports, which would look prettty similar in apache or what ever your webserver is.
server {
listen 80 proxy_protocol;
listen 81 http2 proxy_protocol;
server_name www.example.com;
...
}
ASBai
February 22, 2018, 10:52pm
17
According to our test, chrome 47, 48, 49 are working fine with http2 mode on nginx (Tengine) with h2 support enabled. So you may let the browser connect to nginx directly if using nginx as the reverse proxy is an option in your case.
jdyke
February 22, 2018, 11:17pm
18
I do it this way b/c we have hundreds of domains and its easier to manage certs and just have nginx run on server_name _
, so we terminate at HAProxy, if you have ssl on nginx, it will auto downgrade to 1.1 if the client does not handle H2. Sorry i put a server name in the example, that was misleading.
ASBai
February 23, 2018, 1:19am
19
No, nginx (Tengine) can talk with chrome 49 using h2 without ANY degradation. See the attachments.
ASBai
February 23, 2018, 1:20am
20
new users can only put one image in a post…
ASBai
February 23, 2018, 1:21am
21
new users can only put one image in a post…
jdyke
February 23, 2018, 3:33am
22
Fair enough, but that is not my experience, i was specifically testing with IE10(no H2 support) and all other browsers and versions on virtual boxes b/c i work with US governments and have to be sure their antiquated systems work with our stack. . Are you sure Tengine is not acting inappropriately? Also seeing both the relevant portions of the haproxy config and nginx config would go a long way. I’m not on discourse right now, but don’t think both have been posted. I did extensive testing and switched in haproxy 1.7 and have never witnessed this. I don’t doubt your issue, but the configs along with nginx version (tangine version) would likely be helpful. When i was terminating SSL at nginx there was no issue as it downgrades, but putting HAProxy in front of that changes the behaviour.
Hopefully we can help, as this problem is obviously a burden.
Best,
Jeff
ASBai
February 23, 2018, 1:03pm
23
Sure, if the browser does not support h2 at all (i.e. IE on XP or Win7), then both haproxy and Tengine will degrade to http/1.1 appropriately.
The problem with us is that HAProxy does not work for some older browsers that support alpn and http2 , such as chrome 49 (neither talking with h2 nor downgrade to http / 1.1).
These sub-sites are provided by one of our partners, I will try, but not sure if I can get the detail configurations.
Thanks
ASBai
March 13, 2018, 2:39pm
24
Is there any new progress? Thanks
ASBai
March 26, 2018, 11:45am
25
We have tried the new 1.8.5 revision. It’s working fine with chrome 48 now. Many Thanks for it.
But it still failed on chrome 49:
427: URL_REQUESThttps://demo.wderp.cn/GatherFiles?file_list=%2Flib%2Fshowdown%2Fshowdown.js%7C%2Fjs%2Fcommon%2FAppGlobal.js%7C%2Fjs%2Fcommon%2FSelectBgWin.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseModel.js%7C%2Fjs%2Fmain%2Fmodel%2FDiscussMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAppMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FLpWaitMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FBrowserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FUserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTzTpMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FSiteGeoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRacePartyMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FCostCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRoleMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWfsMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWorkFlowMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTodoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FReportCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAttMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FInstantMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FModelMgr.js%7C%2Fjs%2Fmain%2Fcontroller%2FAppCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBasicSettingCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeWindowMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeQueryFieldMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FSiteGeoCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTzTpCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FCostCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRoleCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRacePartyCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWfsCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWorkflowCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTodoTaskCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FUserCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FReportCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FInstantMessagerCtl.js%7C%2Fjs%2Fmain%2Fview%2FWdmsDeskTop.js%7C%2Fjs%2Fcommon%2FBaseTabPanel.js%7C%2Fjs%2Fcommon%2FBaseTabContentPanel.js%7C%2Fjs%2Fcommon%2FComboTree.js%7C%2Fjs%2Fcommon%2FUploadFileWindow.js%7C%2Fjs%2Fcommon%2FSearchField.js%7C%2Fjs%2Fcommon%2FComboGrid.js%7C%2Fjs%2Fcommon%2FUploadImgResizeSpot.js%7C%2Fjs%2Fcommon%2FUploadImg.js%7C%2Fjs%2Fcommon%2FCompositeField.js%7C%2Fjs%2Fcommon%2FPicView.js%7C%2Fjs%2Fcommon%2FDiscussEditor.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFrameWin.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFramePanel.js%7C%2Fjs%2Fcommon%2FDisplayInfoWin.js%7C%2Fjs%2Fcommon%2FPageTip.js%7C%2Fjs%2Fcommon%2FComboSplitButtnPanel.js%7C%2Fjs%2Fcommon%2FMixSpinnerField.js%7C%2Fjs%2Fcommon%2FShowErrorWin.js%7C%2Fjs%2Fcommon%2FPWSWin.js%7C%2Fjs%2Fcommon%2FWftValueReader.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseWft.js%7C%2Fjs%2Fcommon%2FWindowErrorHandler.js%7C%2Fjs%2Fmain%2Fview%2FAboutWin.js%7C%2Fjs%2Fmain%2Fview%2FWdmsMenu.js%7C%2Fjs%2Fmain%2Fview%2FChangePasswordWin.js%7C%2Fjs%2Fmain%2Fview%2FSetDesktopShortCutsWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTzFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTpFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingSiteFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRaceFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPartyFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingCostCenterFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRoleFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingGroupFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingDetailUserInfoWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditUserNEIWin.js%7C%2Fjs%2Fmain%2Fview%2FWFSManageWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWFSFormWin.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowPanel.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowApproveWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowWin.js%7C%2Fjs%2Fmain%2Fview%2FTodoTasksPanel.js%7C%2Fjs%2Fmain%2Fview%2FInstantMessagePanel.js%7C%2Fjs%2Fmain%2Fview%2FReportCenterPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowShowApproveCommentsWin.js%7C%2Fjs%2Fmain%2Fview%2FReportNameWin.js&common_header=%0D%0A&ver=402770244Start Time: 2018-03-26 19:31:45.468t=56306 [st= 0] +REQUEST_ALIVE [dt=323]
t=56307 [st= 1] URL_REQUEST_DELEGATE [dt=0]
t=56307 [st= 1] +URL_REQUEST_START_JOB [dt=322]
--> load_flags = 49408 (IGNORE_LIMITS | MAYBE_USER_GESTURE | VERIFY_EV_CERT)
--> method = "GET"
--> priority = "HIGHEST"
--> url = "https://demo.wderp.cn/GatherFiles?file_list=%2Flib%2Fshowdown%2Fshowdown.js%7C%2Fjs%2Fcommon%2FAppGlobal.js%7C%2Fjs%2Fcommon%2FSelectBgWin.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseModel.js%7C%2Fjs%2Fmain%2Fmodel%2FDiscussMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAppMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FLpWaitMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FBrowserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FUserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTzTpMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FSiteGeoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRacePartyMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FCostCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRoleMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWfsMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWorkFlowMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTodoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FReportCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAttMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FInstantMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FModelMgr.js%7C%2Fjs%2Fmain%2Fcontroller%2FAppCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBasicSettingCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeWindowMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeQueryFieldMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FSiteGeoCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTzTpCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FCostCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRoleCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRacePartyCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWfsCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWorkflowCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTodoTaskCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FUserCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FReportCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FInstantMessagerCtl.js%7C%2Fjs%2Fmain%2Fview%2FWdmsDeskTop.js%7C%2Fjs%2Fcommon%2FBaseTabPanel.js%7C%2Fjs%2Fcommon%2FBaseTabContentPanel.js%7C%2Fjs%2Fcommon%2FComboTree.js%7C%2Fjs%2Fcommon%2FUploadFileWindow.js%7C%2Fjs%2Fcommon%2FSearchField.js%7C%2Fjs%2Fcommon%2FComboGrid.js%7C%2Fjs%2Fcommon%2FUploadImgResizeSpot.js%7C%2Fjs%2Fcommon%2FUploadImg.js%7C%2Fjs%2Fcommon%2FCompositeField.js%7C%2Fjs%2Fcommon%2FPicView.js%7C%2Fjs%2Fcommon%2FDiscussEditor.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFrameWin.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFramePanel.js%7C%2Fjs%2Fcommon%2FDisplayInfoWin.js%7C%2Fjs%2Fcommon%2FPageTip.js%7C%2Fjs%2Fcommon%2FComboSplitButtnPanel.js%7C%2Fjs%2Fcommon%2FMixSpinnerField.js%7C%2Fjs%2Fcommon%2FShowErrorWin.js%7C%2Fjs%2Fcommon%2FPWSWin.js%7C%2Fjs%2Fcommon%2FWftValueReader.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseWft.js%7C%2Fjs%2Fcommon%2FWindowErrorHandler.js%7C%2Fjs%2Fmain%2Fview%2FAboutWin.js%7C%2Fjs%2Fmain%2Fview%2FWdmsMenu.js%7C%2Fjs%2Fmain%2Fview%2FChangePasswordWin.js%7C%2Fjs%2Fmain%2Fview%2FSetDesktopShortCutsWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTzFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTpFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingSiteFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRaceFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPartyFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingCostCenterFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRoleFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingGroupFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingDetailUserInfoWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditUserNEIWin.js%7C%2Fjs%2Fmain%2Fview%2FWFSManageWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWFSFormWin.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowPanel.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowApproveWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowWin.js%7C%2Fjs%2Fmain%2Fview%2FTodoTasksPanel.js%7C%2Fjs%2Fmain%2Fview%2FInstantMessagePanel.js%7C%2Fjs%2Fmain%2Fview%2FReportCenterPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowShowApproveCommentsWin.js%7C%2Fjs%2Fmain%2Fview%2FReportNameWin.js&common_header=%0D%0A&ver=402770244"
t=56307 [st= 1] URL_REQUEST_DELEGATE [dt=0]
t=56307 [st= 1] HTTP_CACHE_GET_BACKEND [dt=0]
t=56307 [st= 1] HTTP_CACHE_OPEN_ENTRY [dt=26]
--> net_error = -2 (ERR_FAILED)
t=56333 [st= 27] HTTP_CACHE_CREATE_ENTRY [dt=22]
t=56355 [st= 49] HTTP_CACHE_ADD_TO_ENTRY [dt=0]
t=56355 [st= 49] URL_REQUEST_DELEGATE [dt=0]
t=56355 [st= 49] +HTTP_STREAM_REQUEST [dt=0]
t=56355 [st= 49] HTTP_STREAM_REQUEST_STARTED_JOB
--> source_dependency = 430 (HTTP_STREAM_JOB)
t=56355 [st= 49] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 430 (HTTP_STREAM_JOB)
t=56355 [st= 49] -HTTP_STREAM_REQUEST
t=56355 [st= 49] +HTTP_TRANSACTION_SEND_REQUEST [dt=2]
t=56355 [st= 49] HTTP_TRANSACTION_HTTP2_SEND_REQUEST_HEADERS
--> :authority: demo.wderp.cn
:method: GET
:path: /GatherFiles?file_list=%2Flib%2Fshowdown%2Fshowdown.js%7C%2Fjs%2Fcommon%2FAppGlobal.js%7C%2Fjs%2Fcommon%2FSelectBgWin.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseModel.js%7C%2Fjs%2Fmain%2Fmodel%2FDiscussMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAppMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FLpWaitMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FBrowserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FUserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTzTpMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FSiteGeoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRacePartyMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FCostCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRoleMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWfsMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWorkFlowMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTodoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FReportCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAttMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FInstantMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FModelMgr.js%7C%2Fjs%2Fmain%2Fcontroller%2FAppCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBasicSettingCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeWindowMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeQueryFieldMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FSiteGeoCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTzTpCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FCostCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRoleCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRacePartyCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWfsCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWorkflowCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTodoTaskCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FUserCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FReportCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FInstantMessagerCtl.js%7C%2Fjs%2Fmain%2Fview%2FWdmsDeskTop.js%7C%2Fjs%2Fcommon%2FBaseTabPanel.js%7C%2Fjs%2Fcommon%2FBaseTabContentPanel.js%7C%2Fjs%2Fcommon%2FComboTree.js%7C%2Fjs%2Fcommon%2FUploadFileWindow.js%7C%2Fjs%2Fcommon%2FSearchField.js%7C%2Fjs%2Fcommon%2FComboGrid.js%7C%2Fjs%2Fcommon%2FUploadImgResizeSpot.js%7C%2Fjs%2Fcommon%2FUploadImg.js%7C%2Fjs%2Fcommon%2FCompositeField.js%7C%2Fjs%2Fcommon%2FPicView.js%7C%2Fjs%2Fcommon%2FDiscussEditor.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFrameWin.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFramePanel.js%7C%2Fjs%2Fcommon%2FDisplayInfoWin.js%7C%2Fjs%2Fcommon%2FPageTip.js%7C%2Fjs%2Fcommon%2FComboSplitButtnPanel.js%7C%2Fjs%2Fcommon%2FMixSpinnerField.js%7C%2Fjs%2Fcommon%2FShowErrorWin.js%7C%2Fjs%2Fcommon%2FPWSWin.js%7C%2Fjs%2Fcommon%2FWftValueReader.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseWft.js%7C%2Fjs%2Fcommon%2FWindowErrorHandler.js%7C%2Fjs%2Fmain%2Fview%2FAboutWin.js%7C%2Fjs%2Fmain%2Fview%2FWdmsMenu.js%7C%2Fjs%2Fmain%2Fview%2FChangePasswordWin.js%7C%2Fjs%2Fmain%2Fview%2FSetDesktopShortCutsWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTzFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTpFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingSiteFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRaceFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPartyFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingCostCenterFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRoleFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingGroupFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingDetailUserInfoWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditUserNEIWin.js%7C%2Fjs%2Fmain%2Fview%2FWFSManageWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWFSFormWin.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowPanel.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowApproveWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowWin.js%7C%2Fjs%2Fmain%2Fview%2FTodoTasksPanel.js%7C%2Fjs%2Fmain%2Fview%2FInstantMessagePanel.js%7C%2Fjs%2Fmain%2Fview%2FReportCenterPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowShowApproveCommentsWin.js%7C%2Fjs%2Fmain%2Fview%2FReportNameWin.js&common_header=%0D%0A&ver=402770244
:scheme: https
accept: */*
accept-encoding: gzip, deflate, sdch
accept-language: zh-CN,zh;q=0.8
cookie: [53 bytes were stripped]
referer: https://demo.wderp.cn/main.html
user-agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
t=56357 [st= 51] -HTTP_TRANSACTION_SEND_REQUEST
t=56357 [st= 51] +HTTP_TRANSACTION_READ_HEADERS [dt=80]
t=56437 [st=131] HTTP2_STREAM_ERROR
--> description = "ABANDONED (stream_id=65): https://demo.wderp.cn/GatherFiles?file_list=%2Flib%2Fshowdown%2Fshowdown.js%7C%2Fjs%2Fcommon%2FAppGlobal.js%7C%2Fjs%2Fcommon%2FSelectBgWin.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseModel.js%7C%2Fjs%2Fmain%2Fmodel%2FDiscussMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAppMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FLpWaitMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FBrowserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FUserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTzTpMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FSiteGeoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRacePartyMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FCostCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRoleMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWfsMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWorkFlowMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTodoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FReportCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAttMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FInstantMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FModelMgr.js%7C%2Fjs%2Fmain%2Fcontroller%2FAppCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBasicSettingCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeWindowMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeQueryFieldMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FSiteGeoCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTzTpCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FCostCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRoleCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRacePartyCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWfsCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWorkflowCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTodoTaskCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FUserCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FReportCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FInstantMessagerCtl.js%7C%2Fjs%2Fmain%2Fview%2FWdmsDeskTop.js%7C%2Fjs%2Fcommon%2FBaseTabPanel.js%7C%2Fjs%2Fcommon%2FBaseTabContentPanel.js%7C%2Fjs%2Fcommon%2FComboTree.js%7C%2Fjs%2Fcommon%2FUploadFileWindow.js%7C%2Fjs%2Fcommon%2FSearchField.js%7C%2Fjs%2Fcommon%2FComboGrid.js%7C%2Fjs%2Fcommon%2FUploadImgResizeSpot.js%7C%2Fjs%2Fcommon%2FUploadImg.js%7C%2Fjs%2Fcommon%2FCompositeField.js%7C%2Fjs%2Fcommon%2FPicView.js%7C%2Fjs%2Fcommon%2FDiscussEditor.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFrameWin.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFramePanel.js%7C%2Fjs%2Fcommon%2FDisplayInfoWin.js%7C%2Fjs%2Fcommon%2FPageTip.js%7C%2Fjs%2Fcommon%2FComboSplitButtnPanel.js%7C%2Fjs%2Fcommon%2FMixSpinnerField.js%7C%2Fjs%2Fcommon%2FShowErrorWin.js%7C%2Fjs%2Fcommon%2FPWSWin.js%7C%2Fjs%2Fcommon%2FWftValueReader.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseWft.js%7C%2Fjs%2Fcommon%2FWindowErrorHandler.js%7C%2Fjs%2Fmain%2Fview%2FAboutWin.js%7C%2Fjs%2Fmain%2Fview%2FWdmsMenu.js%7C%2Fjs%2Fmain%2Fview%2FChangePasswordWin.js%7C%2Fjs%2Fmain%2Fview%2FSetDesktopShortCutsWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTzFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTpFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingSiteFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRaceFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPartyFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingCostCenterFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRoleFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingGroupFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingDetailUserInfoWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditUserNEIWin.js%7C%2Fjs%2Fmain%2Fview%2FWFSManageWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWFSFormWin.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowPanel.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowApproveWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowWin.js%7C%2Fjs%2Fmain%2Fview%2FTodoTasksPanel.js%7C%2Fjs%2Fmain%2Fview%2FInstantMessagePanel.js%7C%2Fjs%2Fmain%2Fview%2FReportCenterPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowShowApproveCommentsWin.js%7C%2Fjs%2Fmain%2Fview%2FReportNameWin.js&common_header=%0D%0A&ver=402770244"
--> status = -100
--> stream_id = 65
t=56437 [st=131] HTTP_TRANSACTION_RESTART_AFTER_ERROR
--> net_error = -100 (ERR_CONNECTION_CLOSED)
t=56437 [st=131] -HTTP_TRANSACTION_READ_HEADERS
t=56437 [st=131] +HTTP_STREAM_REQUEST [dt=104]
t=56437 [st=131] HTTP_STREAM_REQUEST_STARTED_JOB
--> source_dependency = 431 (HTTP_STREAM_JOB)
t=56541 [st=235] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 431 (HTTP_STREAM_JOB)
t=56541 [st=235] -HTTP_STREAM_REQUEST
t=56541 [st=235] +HTTP_TRANSACTION_SEND_REQUEST [dt=2]
t=56541 [st=235] HTTP_TRANSACTION_HTTP2_SEND_REQUEST_HEADERS
--> :authority: demo.wderp.cn
:method: GET
:path: /GatherFiles?file_list=%2Flib%2Fshowdown%2Fshowdown.js%7C%2Fjs%2Fcommon%2FAppGlobal.js%7C%2Fjs%2Fcommon%2FSelectBgWin.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseModel.js%7C%2Fjs%2Fmain%2Fmodel%2FDiscussMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAppMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FLpWaitMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FBrowserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FUserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTzTpMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FSiteGeoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRacePartyMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FCostCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRoleMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWfsMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWorkFlowMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTodoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FReportCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAttMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FInstantMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FModelMgr.js%7C%2Fjs%2Fmain%2Fcontroller%2FAppCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBasicSettingCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeWindowMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeQueryFieldMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FSiteGeoCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTzTpCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FCostCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRoleCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRacePartyCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWfsCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWorkflowCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTodoTaskCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FUserCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FReportCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FInstantMessagerCtl.js%7C%2Fjs%2Fmain%2Fview%2FWdmsDeskTop.js%7C%2Fjs%2Fcommon%2FBaseTabPanel.js%7C%2Fjs%2Fcommon%2FBaseTabContentPanel.js%7C%2Fjs%2Fcommon%2FComboTree.js%7C%2Fjs%2Fcommon%2FUploadFileWindow.js%7C%2Fjs%2Fcommon%2FSearchField.js%7C%2Fjs%2Fcommon%2FComboGrid.js%7C%2Fjs%2Fcommon%2FUploadImgResizeSpot.js%7C%2Fjs%2Fcommon%2FUploadImg.js%7C%2Fjs%2Fcommon%2FCompositeField.js%7C%2Fjs%2Fcommon%2FPicView.js%7C%2Fjs%2Fcommon%2FDiscussEditor.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFrameWin.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFramePanel.js%7C%2Fjs%2Fcommon%2FDisplayInfoWin.js%7C%2Fjs%2Fcommon%2FPageTip.js%7C%2Fjs%2Fcommon%2FComboSplitButtnPanel.js%7C%2Fjs%2Fcommon%2FMixSpinnerField.js%7C%2Fjs%2Fcommon%2FShowErrorWin.js%7C%2Fjs%2Fcommon%2FPWSWin.js%7C%2Fjs%2Fcommon%2FWftValueReader.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseWft.js%7C%2Fjs%2Fcommon%2FWindowErrorHandler.js%7C%2Fjs%2Fmain%2Fview%2FAboutWin.js%7C%2Fjs%2Fmain%2Fview%2FWdmsMenu.js%7C%2Fjs%2Fmain%2Fview%2FChangePasswordWin.js%7C%2Fjs%2Fmain%2Fview%2FSetDesktopShortCutsWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTzFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTpFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingSiteFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRaceFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPartyFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingCostCenterFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRoleFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingGroupFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingDetailUserInfoWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditUserNEIWin.js%7C%2Fjs%2Fmain%2Fview%2FWFSManageWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWFSFormWin.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowPanel.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowApproveWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowWin.js%7C%2Fjs%2Fmain%2Fview%2FTodoTasksPanel.js%7C%2Fjs%2Fmain%2Fview%2FInstantMessagePanel.js%7C%2Fjs%2Fmain%2Fview%2FReportCenterPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowShowApproveCommentsWin.js%7C%2Fjs%2Fmain%2Fview%2FReportNameWin.js&common_header=%0D%0A&ver=402770244
:scheme: https
accept: */*
accept-encoding: gzip, deflate, sdch
accept-language: zh-CN,zh;q=0.8
cookie: [53 bytes were stripped]
referer: https://demo.wderp.cn/main.html
user-agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
t=56543 [st=237] -HTTP_TRANSACTION_SEND_REQUEST
t=56543 [st=237] +HTTP_TRANSACTION_READ_HEADERS [dt=86]
t=56629 [st=323] HTTP2_STREAM_ERROR
--> description = "ABANDONED (stream_id=1): https://demo.wderp.cn/GatherFiles?file_list=%2Flib%2Fshowdown%2Fshowdown.js%7C%2Fjs%2Fcommon%2FAppGlobal.js%7C%2Fjs%2Fcommon%2FSelectBgWin.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseModel.js%7C%2Fjs%2Fmain%2Fmodel%2FDiscussMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAppMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FLpWaitMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FBrowserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FUserMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTzTpMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FSiteGeoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRacePartyMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FCostCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FRoleMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWfsMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FWorkFlowMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FTodoMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FReportCenterMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FAttMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FInstantMessageMgr.js%7C%2Fjs%2Fmain%2Fmodel%2FModelMgr.js%7C%2Fjs%2Fmain%2Fcontroller%2FAppCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBasicSettingCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeWindowMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FBModeQueryFieldMgrCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FSiteGeoCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTzTpCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FCostCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRoleCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FRacePartyCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWfsCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FWorkflowCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FTodoTaskCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FUserCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FReportCenterCtl.js%7C%2Fjs%2Fmain%2Fcontroller%2FInstantMessagerCtl.js%7C%2Fjs%2Fmain%2Fview%2FWdmsDeskTop.js%7C%2Fjs%2Fcommon%2FBaseTabPanel.js%7C%2Fjs%2Fcommon%2FBaseTabContentPanel.js%7C%2Fjs%2Fcommon%2FComboTree.js%7C%2Fjs%2Fcommon%2FUploadFileWindow.js%7C%2Fjs%2Fcommon%2FSearchField.js%7C%2Fjs%2Fcommon%2FComboGrid.js%7C%2Fjs%2Fcommon%2FUploadImgResizeSpot.js%7C%2Fjs%2Fcommon%2FUploadImg.js%7C%2Fjs%2Fcommon%2FCompositeField.js%7C%2Fjs%2Fcommon%2FPicView.js%7C%2Fjs%2Fcommon%2FDiscussEditor.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFrameWin.js%7C%2Fjs%2Fcommon%2FQueryEditorWithIFramePanel.js%7C%2Fjs%2Fcommon%2FDisplayInfoWin.js%7C%2Fjs%2Fcommon%2FPageTip.js%7C%2Fjs%2Fcommon%2FComboSplitButtnPanel.js%7C%2Fjs%2Fcommon%2FMixSpinnerField.js%7C%2Fjs%2Fcommon%2FShowErrorWin.js%7C%2Fjs%2Fcommon%2FPWSWin.js%7C%2Fjs%2Fcommon%2FWftValueReader.js%7C%2Fjs%2Fmain%2Fmodel%2FBaseWft.js%7C%2Fjs%2Fcommon%2FWindowErrorHandler.js%7C%2Fjs%2Fmain%2Fview%2FAboutWin.js%7C%2Fjs%2Fmain%2Fview%2FWdmsMenu.js%7C%2Fjs%2Fmain%2Fview%2FChangePasswordWin.js%7C%2Fjs%2Fmain%2Fview%2FSetDesktopShortCutsWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTzFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingTpFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingSiteFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRaceFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPartyFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingCostCenterFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingRoleFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingGroupFormWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingDetailUserInfoWin.js%7C%2Fjs%2Fmain%2Fview%2FBasicSettingPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditUserNEIWin.js%7C%2Fjs%2Fmain%2Fview%2FWFSManageWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWFSFormWin.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowPanel.js%7C%2Fjs%2Fmain%2Fview%2FWorkFlowApproveWin.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowWin.js%7C%2Fjs%2Fmain%2Fview%2FTodoTasksPanel.js%7C%2Fjs%2Fmain%2Fview%2FInstantMessagePanel.js%7C%2Fjs%2Fmain%2Fview%2FReportCenterPanel.js%7C%2Fjs%2Fmain%2Fview%2FEditWorkFlowShowApproveCommentsWin.js%7C%2Fjs%2Fmain%2Fview%2FReportNameWin.js&common_header=%0D%0A&ver=402770244"
--> status = -100
--> stream_id = 1
t=56629 [st=323] -HTTP_TRANSACTION_READ_HEADERS
--> net_error = -100 (ERR_CONNECTION_CLOSED)
t=56629 [st=323] -URL_REQUEST_START_JOB
--> net_error = -100 (ERR_CONNECTION_CLOSED)
t=56629 [st=323] URL_REQUEST_DELEGATE [dt=0]
t=56629 [st=323] -REQUEST_ALIVE
--> net_error = -100 (ERR_CONNECTION_CLOSED)
Compared to the previous -3 (ERR_ABORTED), this time the error code becomes -100 (ERR_CONNECTION_CLOSED).
ASBai
March 30, 2018, 3:30pm
26
We found that the h2 implementation of HAProxy 1.8.5 is also incompatible with WebKit. In
the latest version of Huawei Mate 10 (Android 8.0 update: 2018-03-01)
built-in browser, It shows the exact same symptoms as Chrome 49.
The Browser’s User Agent string is:
Mozilla/5.0 (Linux; Android 8.0.0; ALP-AL00 Build/HUAWEIALP-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36
It seems on the new flagship model with latest firmware still has this compatibility issues. Can it rise the priority of this issue?
Thanks
ASBai i’m extremely thankful for all your updates and everything you’ve shared here. i have found the exact same problem of http/2 not being compatible with filrefox on haproxy! will try some ideas i found here but wanted to ask if you don’t mind me asking questions? thanks!
Tim
April 4, 2018, 3:12am
28
I also have the h2 problem with Chome 49 on Windows XP. It is old but sadly we have a lot of clients that still use it.
Sadly we have to fall back to http1.1. It is great if you can have it fixed on the next release
ASBai
April 4, 2018, 8:37am
29
I believe the firefox compatibility issue has been fixed by the 1.8.4 revision. You may try it and see what’s happen.
Of course, we can discuss any related questions here
ASBai
April 8, 2018, 7:00pm
30
We tried the 1.8.7 revision and the same problem still exists.
ASBai
May 22, 2018, 10:51am
31
1.8.9 still has the same problem …
ASBai
August 5, 2018, 5:52pm
32
I’ve found the root of the rest problem: The max length of url has very strict limitation under the h2 mode on some old versions of the chrome blink engine. Even if the same url just working fine under the http/1.1 mode with the exactly same blink engine.
For example: We have an url with 2713 bytes of length, and it is not working under h2 mode for the chrome 49.
The solution is very simple: Just shrink the url length. For example, we have a function deal with the js file batch loading, here is the pseudo code to cover this problem:
function BatchLoadJs(gstJsList)
{
// gstJsList is an array of js files, like: ["a.js", "b.js", "c.js", ...]
// Let's assume there is 90 files in it: gstJsList.length == 90
try
{
// Load all file listed in gstJsList at one shoot;
}
cache (e)
{
// Load files listed in gstJsList by 9 rounds with 10 files per round
// Don't use the browser's agent sting to make the decision, because
// it is not accurate: some third party browser base on the blink engine
// does not show the "chrome" on it (e.g.: The official browser of HUAWEI
// mobile phone).
}
}
We are using HAProxy 1.8.13 now, and in conjunction with the above solution, it successfully passed all of our compatibility tests. And no more browser compatibility complaints so far.
1 Like
ASBai:
For example: We have an url with 2713 bytes of length, and it is not working under h2 mode for the chrome 49.
The solution is very simple: Just shrink the url length
Based on this and an additional report with large cookies triggering the same issue, I reproduced and analyzed the issue.
This is happening because haproxy currently lacks support for the H2 CONTINUATION frame, and Chrome 49 and older stupidly cap the frame control size to 1024 byte. I reported this to Willy/the mailing list:
https://www.mail-archive.com/haproxy@formilux.org/msg31134.html
CONTINUATION is supported since v1.9.2 and it fixes this issue.
1 Like