Igor
я так понимаю он мне не дает возможности сделать кросс доменный запрос?
ixplo
Да
ixplo
Тебе надо искать api, где они разрешены
Igor
та я изначально хотел воспользоваться гугловским api но там чет сложна
Igor
вообщем суть какова, мне нужно реализовать приложение, там есть текст инпут, по клике на батон с инпута берется слово, подставляется в запрос в какую то поисковую систему и на экран выводятся картинки по этому запросу
ixplo
В юности я подобное делал запросом с бэкенда, а потом парсил полученную страницу ) но это плохая идея, я думаю)
Владимир
Владимир
Или быстренько на ноде можно сделать прокси
Владимир
Батоны сделали мой день :)
Владимир
это да
Igor
так, появилось два трабла
fetch('http://crossorigin.me/http://api.duckduckgo.com/?q=cats&format=json$t=ElekenAPP&no_html=1', {mode: 'same-orifin', credentials: 'include'})
.then((response) => response.json())
.then((responseJson) => {responseJson})
.catch((error) => {
console.error(error);
});
при этом запросе ошибка "Fetch API cannot load http://crossorigin.me/http://api.duckduckgo.com/?q=cats&format=json$t=ElekenAPP&no_html=1. The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin 'chrome://startpage' is therefore not allowed access."
Igor
если убрать кредентиалс мод, то
Unexpected end of JSON input
Віктор 🫧
Здравствуйте. Скажите пожалуйста, что это за фрукт такой JavaScript (Vanilla JS) Developer for Imagine?
Віктор 🫧
Именно Developer for imagine , это что-то типа ранга как junior и т.д?
Андрей
mode: 'same-orifin'
орифин
Igor
fetch('http://crossorigin.me/http://api.duckduckgo.com/?q=cats&format=json$t=ElekenAPP&no_html=1', {mode: 'cors', credentials: 'include', headers: {'Access-Control-Allow-Origin':'*'}})
.then((response) => response.json())
.then((responseJson) => {responseJson})
.catch((error) => {
console.error(error);
});
Igor
вот че накрутил, и всё равно ошибки
Андрей
headers: {'Access-Control-Allow-Origin':'*'} - этот хедер должен сервер выставлять
Андрей
а не клиент
Igor
https://github.com/github/fetch/issues/301
Igor
тут почему-то так лепят..
Андрей
потому что у них сервер свой
Андрей
стоп
Андрей
я подумал что fetch это что-то на фронте. а у тебя nodejs?
Igor
неа, я пишу тестовое на React-Native
Anonymous
хостинг какой?
Anonymous
на чем хостишь сервак, откуда берешь фетч?
Андрей
If you have trouble making a request to another domain (a different subdomain or port number also constitutes as another domain), please familiarize yourself with all the intricacies and limitations of CORS requests. Because CORS requires participation of the server by implementing specific HTTP response headers, it is often nontrivial to set up or debug. CORS is exclusively handled by the browser's internal mechanisms which this polyfill cannot influence.
Андрей
это с ридми fetch
Anonymous
андрей
Anonymous
тебе корсы прописать надо
Anonymous
так что ответь пожалуйста
Андрей
флаг Access-Control-Allow-Origin должен сервер прописать
Igor
так окей, а что в тех корсах прописывать?
Андрей
поидее сервис которым ты пользуешься http://crossorigin.me/ позволяет это обходить. так что работать нужно какбудто CORS отключены (выставлен Access-Control-Allow-Origin: *)
Андрей
что возвращает либа если убрать всё фигню с credentials и т.п.
Anonymous
Anonymous
вот та тулза, которую ты используешь
Anonymous
все написано
Anonymous
тобишь в хедер прописываешь
Anonymous
Origin: твой домен
Anonymous
если локалхост, то 127.0.0.1
Anonymous
либо *
Igor
Андрей
Sasha дело говорит
Anonymous
если не понимаешь зачем нужен CORS, то идешь на hacksplaining.com
Anonymous
если зарегаешься, будет больше уроков
Андрей
Игорь надо было прочитать что тебе сервисотвечает
Андрей
http://i.imgur.com/zxFeWdg.png
Андрей
всё же человеческим языком (:
Anonymous
по русски же написано :D
Igor
ухты, а что за тулза такая?
Igor
спасибо
Андрей
постман
Андрей
но и в браузере можно было прочитать
Igor
fetch('http://crossorigin.me/http://api.duckduckgo.com/?q=cats&format=json$t=ElekenAPP&no_html=1', {headers: {Origin: 127.0.0.1}})
.then((response) => response.json())
.then((responseJson) => {responseJson})
.catch((error) => {
console.error(error);
});
верно?
Андрей
в кавычки возьми
Андрей
127.0.0.1
Андрей
ты ведь с 127.0.0.1 страницу открываешь?
Igor
я его вообще тестрирую в консоли
Андрей
а консоль где открыта?
Андрей
если в браузере - то на какойй странице браузера?
Igor
в опере на экспрес панел
Андрей
вбей window.location.origin
Андрей
в консоли
Igor
"chrome://startpage"
Андрей
вот либо эту чертовщину либо "*" вместо 127.0.0.1
Igor
Unexpected end of JSON input
Андрей
потмоу что ответ сервера пустой
Андрей
глянь в постмане
Андрей
а вот такой урл http://crossorigin.me/http://api.duckduckgo.com/?q=cats&format=json уже даёт какой-то читабельный ответ
Андрей
http://i.imgur.com/h7GKwFK.png
Андрей
"Unexpected end of JSON input" происходит потому что пытается прогнать через JSON.parse("")
GG
Ого, ещё один чатик по js
Андрей
таки тысячи их
Андрей
слак от lear.javascript.ru
George