Страницы

Поиск по вопросам

среда, 22 января 2020 г.

example api vine javascript

#javascript #ajax #api


Я тут сутки не спал, поэтому помогите мне подумать.

Есть плеер Vine. У него есть апи https://dev.twitter.com/web/vine/oembed .
Можете сразу посмотреть все заголовки ответа тут https://vine.co/oembed.json?id=5xJVBXAunrD

Мне нужно с клиента получить данные
отправляю запрос



$.ajax({
  url: 'https://vine.co/oembed.json?id=5xJVBXAunrD',
  dataType: "jsonp",
  contentType: "application/json",
  success: () => {
    console.log(arguments)
  },
})





Получаю по лицу: 


  Refused to execute script from
  'https://vine.co/oembed.json?id=5xJVBXAunrD&callback=jQuery211011806981946079831_1482419611704&_=1482419611705'
  because its MIME type ('application/json') is not executable, and
  strict MIME type checking is enabled.


В общем, как я понял, из-за того самого строго соответствия мне нужно все это "Добро"
проксировать?
    


Ответы

Ответ 1



Ошибка происходит из-за того, что сервис отдает json, а dataType = jsonp. Если бы сервис разрешал обращаться к себе с различных сайтов достаточно было бы просто заменить dataType на json. Но в данном случае сервис не разрешает и браузер выдаст ошибку No 'Access-Control-Allow-Origin' header is present on the requested resource. В качестве решение можно либо делать запрос к своему серверу, и уже с него делать серверными средствами запрос, либо воспользоваться одним из сервисов, например: https://cors-anywhere.herokuapp.com/ Пример: $.ajax({ url: 'https://cors-anywhere.herokuapp.com/https://vine.co/oembed.json?id=5xJVBXAunrD', dataType: "json", contentType: "application/json", success: data => { console.log(data) }, }); .as-console-wrapper { top: 0; max-height: 100% !important; }

Ответ 2



Попробуйте заменить контент тайп на Content-Type: application/javascript

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

Отправить комментарий