我正在Docker / Google Cloud Run中运行基于Java / jetty的应用程序。
我发送的回复(其中包括这些标头)>
Content-Type: multipart/signed; ... Content-Length: 4849 Server: Jetty(9.4.20.v20190813)
但是很遗憾,在Google代理请求之后,客户收到了类似这样的内容
将中断多部分响应。客户不受我的控制,因此,这是一个潜在的突破,不幸的是只有在实际构建并部署到Cloud Run之后才出现。Content-Type: text/html Server: Google Frontend Content-Length: 5038
将中断每个期望..正确的Content-Type的客户端,而全部
[不信任自己在Google产品中发现错误,我现在向服务器上的码头添加了请求/响应日志¹。我的服务器看到的最后一件事(查看传出的响应)是:
2019-11-21 03:42:14,002 INFO [no.difi.oxalis.server.Main] Jetty response headers: AS2-From: PSG000186 AS2-Version: 1.0 Message-Id: <1574307732619.1.1661451988.Oxalis@localhost> AS2-To: PSG000186 Date: Thu, 21 Nov 2019 03:42:10 GMT MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-1; boundary="----=_Part_2_1332891644.1574307732643"
当然,在客户端,此Content-Type变为“ text / html”。
据我所知,目前没有办法更改任何内容(再次:同一二进制文件,相同的Docker映像,当在本地使用相同的输入运行时,不会表现出这种方式)。] >
我想知道较长的Content-Type(续篇)是否在这里破坏了东西?
①轻松实现RequestLog
@Override public void log(Request request, Response response) { String responseHeaders = response.getHeaderNames().stream().map(name -> { return name+": "+response.getHeader(name); }).collect(Collectors.joining("\r\n")) + "\r\n\r\n"; log.info("Jetty response headers: \r\n{}", responseHeaders); }
更新
:
[最小测试用例:不幸的是,我无法在一个很小的测试用例中重现此内容(即,仅旋转返回各种内容类型的应用程序)。
关于进出的确切流量:这是一个PEPPOL(认为:业务文档交换标准,主要是本例中是..发票)。我的样本文件是经过稍微修改的真实发票,因此,我需要先找到一种方法来使用完全匿名的数据来重现此文件。
更新2:
基于一些正式的示例文档,这些是客户端收到的响应(格式为标题,空白行,全文):
本地发送到docker run -it --rm gcr.io/myproject/mytag
:
Date: Thu, 21 Nov 2019 08:08:35 GMT AS2-From: PSG000186 AS2-Version: 1.0 Message-Id: <1574323717515.2.2091717429.Oxalis@fd713b389c13> AS2-To: PSG000186 MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-1; boundary="----=_Part_6_682736416.1574323717516" Content-Length: 4856 Server: Jetty(9.4.20.v20190813) ------=_Part_6_682736416.1574323717516 Content-Type: multipart/report; Report-Type=disposition-notification; boundary="----=_Part_4_1507503463.1574323717515" ------=_Part_4_1507503463.1574323717515 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit = Received headers Date: Thu, 21 Nov 2019 08:08:35 +0000 Message-Id: <1574323715268.1.-1501411008.Oxalis@fd713b389c13> Subject: AS2 message from Oxalis MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-1; boundary="----=_Part_1_1634611027.1574323715300" AS2-From: PSG000186 Connection: keep-alive User-Agent: Oxalis 4.1.1-SNAPSHOT Disposition-Notification-To: [email protected] AS2-Version: 1.0 Host: localhost:8080 Accept-Encoding: gzip,deflate Disposition-Notification-Options: signed-receipt-protocol=required,pkcs7-signature; signed-receipt-micalg=required,sha1 AS2-To: PSG000186 Content-Length: 19479 ------=_Part_4_1507503463.1574323717515 Content-Type: message/disposition-notification Content-Transfer-Encoding: 7bit Date: Thu, 21 Nov 2019 08:08:36 +0000 Reporting-UA: Oxalis 4.1.1-SNAPSHOT Original-Recipient: rfc822; PSG000186 Final-Recipient: rfc822; PSG000186 Original-Message-ID: <1574323715268.1.-1501411008.Oxalis@fd713b389c13> X-Oxalis-Original-Content-Header: Q29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94bWwNCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NA0KDQo= Received-Content-Mic: yI4WRPi283i7xj5KOnRy3O+XCCU=, sha1 Disposition: automatic-action/MDN-sent-automatically; processed ------=_Part_4_1507503463.1574323717515-- ------=_Part_6_682736416.1574323717516 Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIAwggXuMIID 1qADAgECAhAMJNw3XIlx1Z3q61spNiGjMA0GCSqGSIb3DQEBCwUAMGsxCzAJBgNVBAYTAkJFMRkw FwYDVQQKExBPcGVuUEVQUE9MIEFJU0JMMRYwFAYDVQQLEw1GT1IgVEVTVCBPTkxZMSkwJwYDVQQD EyBQRVBQT0wgQUNDRVNTIFBPSU5UIFRFU1QgQ0EgLSBHMjAeFw0xODExMTMwMDAwMDBaFw0yMDEx MDIyMzU5NTlaMHsxEjAQBgNVBAMMCVBTRzAwMDE4NjEXMBUGA1UECwwOUEVQUE9MIFRFU1QgQVAx PzA9BgNVBAoMNldvcmtmbG93IE1hbmFnZW1lbnQgJiBEb2N1bWVudCBDb25zdWx0aW5nIEFzaWEg UHRlIEx0ZDELMAkGA1UEBhMCU0cwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/Yy7Z xvyujk8UE7xFXmfhFnWjox6CM6vRGWnPQ23ox59mC4mFFz7Ie9MAw2MdqWx01QI+xcyT8BKqPq9d rSD44SFcFccaO3P81Q4jPGMDoljA40iqzCzJYoIdhJZEMIO7W7jyiRFak/OAB1xHh6UHfKnapZXa wqXlHC8gyTHHGfZtFunL//e8lTYqMSFbRAega9caqbxUEsg2AqF4W2PtAoAHUtdVP/XkdEUCQ2Yl gezvv0QFOazakjmaZzu1ZzKxplimMflktaH3OA8GfLMz2MoGo4zjk2s+yyDZr8SfXUfzQ5+/+WC5 FeZvnpTM4W2/Z1hfeQxc62CMBCUqkM+NAgMBAAGjggF8MIIBeDAMBgNVHRMBAf8EAjAAMA4GA1Ud DwEB/wQEAwIDqDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUXPzNhnbQGAEj+iwQ 45i5surQ6Y0wXQYDVR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2Ff NmE5Mzc3MzRhMzkzYTA4MDViZjMzY2RhOGIzMzEwOTMvTGF0ZXN0Q1JMLmNybDA3BggrBgEFBQcB AQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9wa2ktb2NzcC5zeW1hdXRoLmNvbTAfBgNVHSMEGDAW gBRrb0u28Te6Kzx/GM26K7K5fCo36zAtBgpghkgBhvhFARADBB8wHQYTYIZIAYb4RQEQAQIDAQGB qZDhAxYGOTU3NjA4MDkGCmCGSAGG+EUBEAUEKzApAgEAFiRhSFIwY0hNNkx5OXdhMmt0Y21FdWMz bHRZWFYwYUM1amIyMD0wDQYJKoZIhvcNAQELBQADggIBAHS85wUs42jOXKGqIBditIeb8h8O+kW/ IVX++ChjLLJ+2jTQ4WJZ5cnvGmTwRwCe/Dvn2pKK5cuVz2pJyk33MrYmWsTdf8t3tgQqtS5Z11dz OoycNDKc4pgZNdSp4lRgm4fEePjrEofm1eTFWadCOVcf1acHq1qVXUXpPn+5ek9HonPNFwXqQJGb yF9nVE+U/Sd6/owZ9Y7w2CdvDuKrZ1NWw19wURaM0GrTJbq9/7Z+eb0vsMEItu5J/77QTzaPbIpJ XrHTkCLlGu2Kc7wjmJv4nubxKf15yFnxnTDkgZcg0VUljaLoTaeIyWXwhXQuYVMMdbbl/HGVy2aH WVtVOe0lOnhVbSPwq9IIsh/GfZ8DTyrEeK7iSwZ0Rgc9fuTvaAkdrwYHdvMxHuzEs3tI74yN6NFE daFUOkFIt/+lJk6LPOgBF7uX+THzDuqd27aXJX1kcwFBDCXIs/ZMwq1mPsBU9TrprS0liWtKXhXm J/8qWRUWZGVUVs4DwzN1+TeSKaN4q5nnGShjRj3iXY5Oodc5k09wbqhO6NVkXUbUZ1TQghYIy/bt oPk5jG1FOyNC9r3+/FowDV1sipCIiJWgBh7P4i3Xwu5ac5P9vctW32rmLqAl7wF9h/k6HvHUo4xd 6GkKceCd25kcTDVTKvC6Zy3/UEmxF55gGeEEL8tgG1IIAAAxggIxMIICLQIBATB/MGsxCzAJBgNV BAYTAkJFMRkwFwYDVQQKExBPcGVuUEVQUE9MIEFJU0JMMRYwFAYDVQQLEw1GT1IgVEVTVCBPTkxZ MSkwJwYDVQQDEyBQRVBQT0wgQUNDRVNTIFBPSU5UIFRFU1QgQ0EgLSBHMgIQDCTcN1yJcdWd6utb KTYhozAJBgUrDgMCGgUAoIGIMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF MQ8XDTE5MTEyMTA4MDgzOFowIwYJKoZIhvcNAQkEMRYEFKmBs7d9VEkSL3Oo6UaH3wUoM4JgMCkG CSqGSIb3DQEJNDEcMBowCQYFKw4DAhoFAKENBgkqhkiG9w0BAQEFADANBgkqhkiG9w0BAQEFAASC AQBy4ajH5c6ZmfllxNeXtqMdm4N5geM9KhpJLEEdkNYwD1EK2lBeK5rS4uJX8DMQRA5SsblUnsKO rpxz134zJwMh8xhOxXERFm164s++8A+co38ftIjAvb5D1urZKUvn79h0fzQlIl2gU1lJVOaN/6nR t/V4qAucBrmMpFf1gfhGdgfcBHHTdST+vffNhk76orDfUy1ImxeooeMc1hiiu5I/iNveES/Gp5s8 ltLpmXxc4R4cRz8CUAYaHzOesa8X2QpwrpK3fUMRd0xvpOSFXsw7dWXMUTPX3hhBOwxWCMQJEUSQ sgShal1tyALPhJhCk2iNGYpA8JjEurPs6gK+vk6iAAAAAAAA ------=_Part_6_682736416.1574323717516--
发送到运行相同图像的Google Cloud服务:
as2-from: PSG000186 as2-version: 1.0 message-id: <1574323812231.2.1014381783.Oxalis@localhost> as2-to: PSG000186 mime-version: 1.0 X-Cloud-Trace-Context: 60c1258ef2c1295b01a27e3633acc267;o=1 Date: Thu, 21 Nov 2019 08:10:12 GMT Content-Type: text/html Server: Google Frontend Content-Length: 5045 Alt-Svc: quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000 ------=_Part_6_1913495260.1574323812233 Content-Type: multipart/report; Report-Type=disposition-notification; boundary="----=_Part_4_1743408990.1574323812231" ------=_Part_4_1743408990.1574323812231 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit = Received headers Date: Thu, 21 Nov 2019 08:10:10 +0000 message-id: <1574323810575.1.-368437367.Oxalis@fd713b389c13> subject: AS2 message from Oxalis MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-1; boundary="----=_Part_1_2065922950.1574323810605" as2-version: 1.0 User-Agent: Oxalis 4.1.1-SNAPSHOT X-Forwarded-Proto: https Host: einvoice-sg-inbound-7tyhycme6a-an.a.run.app Accept-Encoding: gzip,deflate as2-from: PSG000186 x-cloud-trace-context: 60c1258ef2c1295b01a27e3633acc267/2200277044701127466;o=1 Forwarded: for="223.25.66.148";proto=https X-Forwarded-For: 223.25.66.148 as2-to: PSG000186 disposition-notification-to: [email protected] disposition-notification-options: signed-receipt-protocol=required,pkcs7-signature; signed-receipt-micalg=required,sha1 Content-Length: 19479 ------=_Part_4_1743408990.1574323812231 Content-Type: message/disposition-notification Content-Transfer-Encoding: 7bit Date: Thu, 21 Nov 2019 08:10:11 +0000 Reporting-UA: Oxalis 4.1.1-SNAPSHOT Original-Recipient: rfc822; PSG000186 Final-Recipient: rfc822; PSG000186 Original-Message-ID: <1574323810575.1.-368437367.Oxalis@fd713b389c13> X-Oxalis-Original-Content-Header: Q29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94bWwNCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NA0KDQo= Received-Content-Mic: yI4WRPi283i7xj5KOnRy3O+XCCU=, sha1 Disposition: automatic-action/MDN-sent-automatically; processed ------=_Part_4_1743408990.1574323812231-- ------=_Part_6_1913495260.1574323812233 Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIAwggXuMIID 1qADAgECAhAMJNw3XIlx1Z3q61spNiGjMA0GCSqGSIb3DQEBCwUAMGsxCzAJBgNVBAYTAkJFMRkw FwYDVQQKExBPcGVuUEVQUE9MIEFJU0JMMRYwFAYDVQQLEw1GT1IgVEVTVCBPTkxZMSkwJwYDVQQD EyBQRVBQT0wgQUNDRVNTIFBPSU5UIFRFU1QgQ0EgLSBHMjAeFw0xODExMTMwMDAwMDBaFw0yMDEx MDIyMzU5NTlaMHsxEjAQBgNVBAMMCVBTRzAwMDE4NjEXMBUGA1UECwwOUEVQUE9MIFRFU1QgQVAx PzA9BgNVBAoMNldvcmtmbG93IE1hbmFnZW1lbnQgJiBEb2N1bWVudCBDb25zdWx0aW5nIEFzaWEg UHRlIEx0ZDELMAkGA1UEBhMCU0cwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/Yy7Z xvyujk8UE7xFXmfhFnWjox6CM6vRGWnPQ23ox59mC4mFFz7Ie9MAw2MdqWx01QI+xcyT8BKqPq9d rSD44SFcFccaO3P81Q4jPGMDoljA40iqzCzJYoIdhJZEMIO7W7jyiRFak/OAB1xHh6UHfKnapZXa wqXlHC8gyTHHGfZtFunL//e8lTYqMSFbRAega9caqbxUEsg2AqF4W2PtAoAHUtdVP/XkdEUCQ2Yl gezvv0QFOazakjmaZzu1ZzKxplimMflktaH3OA8GfLMz2MoGo4zjk2s+yyDZr8SfXUfzQ5+/+WC5 FeZvnpTM4W2/Z1hfeQxc62CMBCUqkM+NAgMBAAGjggF8MIIBeDAMBgNVHRMBAf8EAjAAMA4GA1Ud DwEB/wQEAwIDqDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUXPzNhnbQGAEj+iwQ 45i5surQ6Y0wXQYDVR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2Ff NmE5Mzc3MzRhMzkzYTA4MDViZjMzY2RhOGIzMzEwOTMvTGF0ZXN0Q1JMLmNybDA3BggrBgEFBQcB AQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9wa2ktb2NzcC5zeW1hdXRoLmNvbTAfBgNVHSMEGDAW gBRrb0u28Te6Kzx/GM26K7K5fCo36zAtBgpghkgBhvhFARADBB8wHQYTYIZIAYb4RQEQAQIDAQGB qZDhAxYGOTU3NjA4MDkGCmCGSAGG+EUBEAUEKzApAgEAFiRhSFIwY0hNNkx5OXdhMmt0Y21FdWMz bHRZWFYwYUM1amIyMD0wDQYJKoZIhvcNAQELBQADggIBAHS85wUs42jOXKGqIBditIeb8h8O+kW/ IVX++ChjLLJ+2jTQ4WJZ5cnvGmTwRwCe/Dvn2pKK5cuVz2pJyk33MrYmWsTdf8t3tgQqtS5Z11dz OoycNDKc4pgZNdSp4lRgm4fEePjrEofm1eTFWadCOVcf1acHq1qVXUXpPn+5ek9HonPNFwXqQJGb yF9nVE+U/Sd6/owZ9Y7w2CdvDuKrZ1NWw19wURaM0GrTJbq9/7Z+eb0vsMEItu5J/77QTzaPbIpJ XrHTkCLlGu2Kc7wjmJv4nubxKf15yFnxnTDkgZcg0VUljaLoTaeIyWXwhXQuYVMMdbbl/HGVy2aH WVtVOe0lOnhVbSPwq9IIsh/GfZ8DTyrEeK7iSwZ0Rgc9fuTvaAkdrwYHdvMxHuzEs3tI74yN6NFE daFUOkFIt/+lJk6LPOgBF7uX+THzDuqd27aXJX1kcwFBDCXIs/ZMwq1mPsBU9TrprS0liWtKXhXm J/8qWRUWZGVUVs4DwzN1+TeSKaN4q5nnGShjRj3iXY5Oodc5k09wbqhO6NVkXUbUZ1TQghYIy/bt oPk5jG1FOyNC9r3+/FowDV1sipCIiJWgBh7P4i3Xwu5ac5P9vctW32rmLqAl7wF9h/k6HvHUo4xd 6GkKceCd25kcTDVTKvC6Zy3/UEmxF55gGeEEL8tgG1IIAAAxggIxMIICLQIBATB/MGsxCzAJBgNV BAYTAkJFMRkwFwYDVQQKExBPcGVuUEVQUE9MIEFJU0JMMRYwFAYDVQQLEw1GT1IgVEVTVCBPTkxZ MSkwJwYDVQQDEyBQRVBQT0wgQUNDRVNTIFBPSU5UIFRFU1QgQ0EgLSBHMgIQDCTcN1yJcdWd6utb KTYhozAJBgUrDgMCGgUAoIGIMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF MQ8XDTE5MTEyMTA4MTAxMlowIwYJKoZIhvcNAQkEMRYEFOlYVvawoVrqV2FlIuOAuf1fjPE/MCkG CSqGSIb3DQEJNDEcMBowCQYFKw4DAhoFAKENBgkqhkiG9w0BAQEFADANBgkqhkiG9w0BAQEFAASC AQAKzAdDnumWOoOdHBzW65Br3zIoEBHyNYlgLtx1NoXp1ugq31fc/hdZ2G5l3V02tuYowAvtHOyl WQFV1ghj9IeSjjYYqYNO1XwhRmkMC/xRXa0wL0bBrz2Fz7xmDTUgQx2JbWnqnB0yvf/F+n3kXGhA nF0PtlNSW36XG6vn20NGEiNyRVRymK6QO7asAsV2H+p46zFEY28ehbX6U3211tP3jy992f76tQVo 0wMMH9vkP+Jgz1qZbCMF4VV51q7RNsmH+dqvA3EdYBIBGFm8cbiO/xOK5evLlMrw7y7m9XfSDmQ9 I1Mdtnjff8A65MWmUlhe7u/lAHGPLiUqzG0sTldRAAAAAAAA ------=_Part_6_1913495260.1574323812233--
编辑3:
我在评论中被要求提供答复的正文-并已在上文中提供。但是就我所知,就我所知,这[[无所谓。如果在请求处理后,服务器端看到“ Content-Type:foo / bar”,那么我希望收到该信息。如果我先将响应转储到客户端,则应显示“ Content-Type:foo / bar”。无论我发送json,xml,多部分,二进制文件还是什么都不发送。如果我的内容是胡扯的,那么格式是否正确:我希望云服务将我的响应保持不变,以中继该服务(忽略诸如附加X-头等必需的工件)。
编辑4:
为了绝对确保正在进行的客户端没有任何异常或与请求本身中的任何内容相关,我创建了一个curl脚本(删除了Java客户端库),发布了转储的请求正文(消除了任何潜在的差异)在正文中)具有来自相同转储请求的固定标头(甚至消除了标头(如“日期”)和生成的内容(如多部分边界)的变化)。我使用curl运行二进制等效请求,一次针对我的本地docker映像(响应内容类型:multipart-signed; ..)和云运行(响应内容类型:text / html)。
回复之间的差异:
content
更新5:
添加了javamail标记-也许对此API有更多经验的人可以告诉我是否有避免标题折叠的方法。有问题的代码以here开头,Content-Type标头设置为
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-1; boundary="----=_Part_14_175240407.1574354551085"
[C0之后。我在遵循代码并理解\ t char的来源以及原因方面遇到了麻烦。在我的回复中,我有多个多部分内容类型,其中大约一半包含\ t,其中一半没有。
我正在Docker / Google Cloud Run中运行基于Java / jetty的应用程序。我正在发送的响应(除其他外)具有以下标头Content-Type:multipart / signed; ...内容长度:4849服务器:...