Я тут сутки не спал, поэтому помогите мне подумать.
Есть плеер 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.
В общем, как я понял, из-за того самого строго соответствия мне нужно все это "Добро" проксировать?
Ответ
Ошибка происходит из-за того, что сервис отдает 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;
}
Комментариев нет:
Отправить комментарий