Missing important http headers sometimes

Host header is a must and should always be sent all along with the request, so not providing it should obviously cause an error as done by your webserver. See Host - HTTP | MDN

You could try logging all headers in IIS like shown here

Or for debugging, I would grab the headers and all data of a request with the help of cfml gethttprequestdata() function at the start of the processig template/component: You could e.g. insert it into a database debug table with URL, time, request, and IP address to identify the requests afterwards. Because you are seeing wrong processing you could easily find it. If you have lots of requests, you could create a “debugging id hash” and add it that id to your debug table and to your processing table for solid proof reference of the failed requests to your debugging log entries in the database table.

Then use postman or a similar tool for further debugging.