Почему мое приложение vuejs не может воспроизводить аудио из запроса?

#javascript #vue.js #amazon-s3 #axios #html5-audio

#javascript #vue.js #amazon-s3 #axios #html5-аудио

Вопрос:

Я создаю приложение для музыкального проигрывателя и столкнулся со следующей проблемой. В created функции я делаю GET запрос на сервер, который является ответом на объект song с URL-адресом корзины AWS S3. Затем я использую объект song trackPath для инициализации audio src, но audio src ничего не воспроизводит. Похоже, что источник мультимедиа ничего не видит, но когда я проверяю HTML в режиме разработки, html-код исправен, есть ссылка на src prop. Если я «жестко закодирую» ссылку s3 на файл в audio src, он работает нормально. Вот мой код. В чем проблема? Я понятия не имею. Я пробовал с beforeMount и т. Д., Но не работает.

 <template>
  <div class="player">
      <audio controls preload="auto" class="audio-player">
      <source :src="getTrackPath()" type="audio/mpeg"/>
    </audio>
  </div>
</template>

<script>

import axios from 'axios'

import config from '../config'

export default {
  name: 'PlayerComponent',
  mounted () {
    console.log(this.$el)
  },
  created () {
    const token = localStorage.getItem('token')

    axios.get(config.trackURL.concat(`?_id=${this.id}`), {
      headers: {
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json',
        Authorization: `Bearer ${token}`
      }
    }).then((resp) => {
      this.song = resp.data[0]
    }).catch((err) => {
      console.log(err)
    })
  },
  data () {
    return {
      song: {},
      id: this.$route.params.id
    }
  },
  methods: {
    getTrackPath () {
      return this.song.trackPath
    }
  }
}
</script>

  

Комментарии:

1. Просто к вашему сведению Access-Control-Allow-Origin , это заголовок, который должен присутствовать в ответе сервера. Добавление этого в запрос клиента ничего не даст.

2. Спасибо! 🙂 Ты прав..