我们很难在我们的网站上调试 400 个错误。我们有很多这样的错误:
10.0.0.1 - - [08/Oct/2018:14:28:07 +0200]
"GET /les-news/palmares/detail/article/la-lettre-de-motivation-ideale-pour-une-demande-de-stage-5224/
HTTP/1.1" 400 131844
"https://www.google.com/"
"Mozilla/5.0 (Linux; Android 7.0; TECNO K7 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36"
用户通过电子邮件报告了该问题,并通过在他的浏览器中重置其 cookie 来解决此问题,因为其他重置 cookie 是不够的(但我们不能确定它是否正确完成)。
该平台相当复杂,由F5 负载均衡器处理,具体取决于转发到不同服务器的请求的路径。
一开始我想要的是能够重现错误,因为在访问 URL 时我们没有任何内容,并且一切正常。
我们注意到大部分错误来自 Android/Chrome:大约 85% 的所有 400 错误。
这是完整的日志:
timestamp October 8th 2018, 16:26:52.000
version 1
_id BmQSVGYB5vF-Dw_g1gVi
_index f5_access-2018.10.08
_score -
t _type doc
t agent Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36
client_ip 10.0.0.1
client_port 41,068
facility local2
host mydomain.fr
httpversion 1
id 2,503,307,391
length 0
logsource mydomain.network.local
message virtual=/Common/mydomain.fr_HTTP client_ip=10.0.0.1 client_port=41068 lb_server=10.153.161.12:80 host=mydomain.fr request_port=80 username= request="GET / HTTP/1.1" server_status=400 content_length=0 resp_time=23 user_agent="Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36" referer=http://mydomain.fr/article/100-millions-d-euros-sciences-po-lance-la-plus-grande-levee-de-fonds-de-son-histoire_095255b4-caef-11e8-896c-7d05c73a49da/ ID=2503307391 timestamp=2018-10-08T16:26:52+0200 pool=/Common/POOL_ETUDIANT_v2_nocache
pool POOL_MYDOMAIN_v2_nocache
program f5_access
referer http://mydomain.fr/article/100-millions-d-euros-sciences-po-lance-la-plus-grande-levee-de-fonds-de-son-histoire_095255b4-caef-11e8-896c-7d05c73a49da/
request /
request_port 80
server_ip 10.0.0.1
server_port 80
severity Informational
status 400
stdstatus 4xx
stdvirtual mydomain_fr_HTTP
tags f5_access
time 23
timestamp October 8th 2018, 16:26:52.000
type f5_access
verb GET
virtual mydomain.fr_HTTP
这很可能是由客户端引起的,而不是由服务器引起的(嗯,它可以是间接的)。如果它不仅仅是一个格式错误的 url(一个在能够触发 404 之前被 400 阻止的 URL),在 99% 的情况下,这是由
如果您想测试被阻止的 cookie 假设,请在浏览器上阻止 cookie 并查看是否收到 400 错误,其余的有点棘手,请参阅:https ://airbrake.io/blog/http-errors/400-错误的请求
既然您已经说过刷新 cookie 可以解决问题,我会假设它与 cookie 相关。
编辑:
我有另一个角度:请求通过 http(未加密),并包含一个带有 GET 请求的引荐来源网址,其中包含字符串“用户名”。这实际上使访问该站点的用户在其标头中具有该引荐来源地可识别,更重要的是,该请求可以由中间的人以明文形式查看。
由于谷歌已经对未加密的 http 流量发起了一场战争,我可以假设 Chrome 会导致一些问题。这只是一个假设,我无法证实或支持它。但值得一试,因为无论如何您都应该加密您的流量。
您是否在服务器上设置了 https,如果有,您可以尝试在使用 https 时重现相同的错误吗?