Hi John,
I suspect the issue may be in your proxy. To confirm, please open the network panel of Chrome dev tools and tell me if the failing request is very small, maybe 2-4 bytes long.
Widevine uses server certificates to encrypt identifying information in the license request. This is to protect the user's privacy. Only the intended license server has the private key needed to decrypt the client's ID.
Before Chrome 58, these certificates were only needed when certain options were turned on via EME. In Chrome 58 and after, these certificates are always needed.
If the server certificate is not provided by the application, the CDM will provision one through the license server before making an actual license request. This request is much smaller than a license request, so you can use this as a quick hack to detect the server certificate request. (For a better solution, you will need to contact Widevine support for guidance. I don't know the details on how this is supposed to be done.)
If your proxy is parsing every request and throwing an error when the request does not contain a key ID, it's probably failing on these certificate requests. If you pass these requests on to the backend, the CDM will get its server certificate and then make an actual license request.
Once you have fixed your proxy to correctly pass on these server certificate requests, you can take one more step in the client to optimize out this extra round trip. You can contact Widevine support to get a server certificate that you can supply to Shaka Player (who will in turn provide it to the CDM via EME). This will eliminate the extra round trip to provision the certificate. This extra step is a completely optional optimization.
Does this help?
-Joey