は検索クエリを XmlHttpRequest で投げる際のパラメータにローカル PC の RTC から生成した現在時刻の timestamp が含まれてるんだけど、
60 秒経過したクエリは無効なクエリとして弾かれるため
PC の時計が 60 秒以上遅れていると
Request failed with status code 502 [ERR_BAD_RESPONSE]
でエラーになって検索出来ない。
60 秒経過したクエリは無効なクエリとして弾かれるため
PC の時計が 60 秒以上遅れていると
Request failed with status code 502 [ERR_BAD_RESPONSE]
でエラーになって検索出来ない。
が 502 吐いて検索出来ないと相談を受けた。
自分の環境では問題かったので、
たまたま検索したタイミングで、NIHR のバックエンドがトラブってたんじゃね?
もう直ってるっしょ?
みたいな返事したら、
ノートは問題ないけどデスクトップだとエラーになるとかなんとか。
んなアホな!!!
ってことで調べてみた
自分の環境では問題かったので、
たまたま検索したタイミングで、NIHR のバックエンドがトラブってたんじゃね?
もう直ってるっしょ?
みたいな返事したら、
ノートは問題ないけどデスクトップだとエラーになるとかなんとか。
んなアホな!!!
ってことで調べてみた
XmlHttpRequest で投げた検索クエリを JSON で受け取ってて、
Firefox で cURL 吐かせてみたらこんな感じ。
curl 'https://www.crd.york.ac.uk/PROSPERO/api/search' \ -X POST \ -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0' \ -H 'Accept: application/json, text/plain, */*' \ -H 'Accept-Language: ja,en-US;q=0.7,en;q=0.3' \ -H 'Accept-Encoding: gzip, deflate, br, zstd' \ -H 'Content-Type: application/json' \ -H 'prospero-auth-token: MTc0Mzc2MjA3NTEyMQ==' \ -H 'Origin: https://www.crd.york.ac.uk' \ -H 'Connection: keep-alive' \ -H 'Referer: https://www.crd.york.ac.uk/PROSPERO/search' \ -H 'Sec-Fetch-Dest: empty' \ -H 'Sec-Fetch-Mode: cors' \ -H 'Sec-Fetch-Site: same-origin' \ -H 'Priority: u=0' \ --data-raw '{"term":"nurse","page":1,"nperpage":20,"sort":"TI","sortorder":"ASC","filters":[],"download":false,"actual":"nurse"}'
このクエリ、約 60 秒くらいで無効になるんだけど、
無効になる原因は
-H 'prospero-auth-token: MTc0Mzc2MjA3NTEyMQ==' \
の部分らしく、毎回異なる値がセットされる。
末尾「==」なので base64 じゃね?って事で、
$ echo MTc0Mzc2MjA3NTEyMQ== | base64 -d | xxd 00000000: 3137 3433 3736 3230 3735 3132 31 1743762075121
ってしてみたら、UNIX time じゃね?って感じだったので、
$ date -d @1743762075121 Sun Aug 15 19:12:01 JST 57227
西暦がおかしいので、多分ミリ秒かなって事で末尾 3 桁削ると
$ date -d @1743762075 Fri Apr 4 19:21:15 JST 2025
みたいな感じで、ミリ秒単位の UNIX time であることが確定。
って事で、PC の時計 60 秒以上遅れてるんじゃね?ってのが結論だった。
タグ
コメントをかく