Посмотри реальные ответы сервера в Chrome Developer Tools в панели Network при отключенной опции "Disable Caching"
Там может не быть CORS заголовков, или они могут быть не с тем access-control-allow-origin, если ты уже открывал тот же URL через прямой запрос из строки браузера или запрашивал тот же URL в том же браузере с другого домена.
Дело в том, что браузер кэширует ответы включая заголовки. Ключом в кэше является URL запроса, а все заголовки (куки, origin, referrer) не участвуют. Поэтому у тебя в кэше может быть сохранённый ответ с заголовками ранее сделанного запроса.
Решение, которое гарантирует, что ответ сервера не будет кэшироваться:
1. в ответе сервера указывать заголовки, подавляющие кэширование
2. делать запросы методом POST, который не кэшируется
3. добавлять к URL "хвостик" из псевдослучайных символов, например ревизию кода, версию API, наименования вызывающего приложения или даже метку времени
На практике мы пытались 1, 2 и в итоге пришли к 3 если гарантированно нужен незакешированный ответ сервера. Например, количество непрочитанных сообщений пользователя.