Отзывчивый голос заблокирован CORS - PullRequest
3 голосов
/ 02 августа 2020

Я пытаюсь создать функцию, которая считывает цифры с определенной задержкой между ними.

{
...
play : function (digits, delay = 500) {
  if (digits && digits.length > 0) {
    responsiveVoice.speak(digits[0], "Czech Female", {
      rate: 0.7,
      onend: () => setTimeout(() => {
        this.play(digits.splice(1), delay);
      }, delay)
    });
  }
}

digits - это массив цифр и delay задержка в мс между цифрами.

Некоторое время функция работает нормально, но случайным образом выдает следующую ошибку в консоли:

Доступ к XMLHttpRequest в 'https://texttospeech.responsivevoice.org/v1/text: synthesize? Text = 0 & lang = cs & engine = g1 & name = & pitch = 0.5 & rate = 0.35 & volume = 1 & key = XXXXXXXX & пол = женский 'from origin' http://localhost: 8080 'был заблокирован политикой CORS: на запрошенном ресурсе нет заголовка' Access-Control-Allow-Origin '. Не удалось загрузить отзывчивый голосовой звук. Проблема с подключением вашего браузера к конечной точке API. GET https://texttospeech.responsivevoice.org/v1/text: синтезировать? Text = 0 & lang = cs & engine = g1 & name = & pitch = 0.5 & rate = 0.35 & volume = 1 & key = XXXXXXXX & пол = женский net :: ERR_FAILED

Может кто-нибудь подскажет, что не так?

1 Ответ

2 голосов
/ 02 августа 2020

Библиотека, которую вы используете, не очень хорошо работает, когда дело касается символа 0 (по крайней мере). Я протестировал ваш код, и он хорошо работал для любого другого ввода.

Почему-то при вводе 0 в эту библиотеку он отправляет запрос в API как XMLHttpRequest вместо HTMLAudioElement (используется для каждой рабочей речи).

console

XMLHttpRequest has some restrictions when it comes to cross-domain requests (for more informations you can read about CORS ), а API, похоже, не поддерживает вызовы XMLHttpRequest.

Это несоответствие между библиотекой и API, я подозреваю, что это ошибка в библиотеке, связанная с проверками достоверности / ложности.

Вам следует связаться с их службой поддержки и сообщить об этой ошибке.

Изменить:

Как написано в комментариях, кажется, что есть обходной путь, который заключается в добавлении пробела перед di git.

...