В код особо не вчитывался, так как ошибка в большинстве случаев в другом. В браузере по умолчанию прописана защита от таких запросов, то есть если бы твой запрос выполнялся с хоста, то скорее всего все было бы ок. Я знаю целых 2 решения, существует их мб и больше. Первое это установить это расширение
https://chrome.google.com/webstore/detail/allow-co... (если ты пользуешься хромом), а второе это прописать следующие строки в конфигах браузера --disable-web-security --user-data-dir (в свойствах, в поле "объект", через пробел от того, что там уже имеется)