
Valeriy
14.06.2018
21:02:11

Ilya
14.06.2018
21:02:33

Valery
14.06.2018
21:27:56
Может кто-нибудь объяснить как работает .env файл? Можно ли как то настроить, что бы для тестового сервера загружался один файл, а для прода другой? И как использовать переменные из этого файла в коде? Например, что бы для теста url апи брался из .env.test, а для прода, эта же переменная бралась из .env.production. Или при сборке с помощью npm run build данные будут сами подтягиваться из .env.production? Как это работает?

Eugeniy
14.06.2018
21:32:16

Google

Артур
14.06.2018
21:33:11

Valeriy
14.06.2018
21:34:41
там еще есть куча возможностей https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#adding-custom-environment-variables
создай проект, сделай eject и посмотри как они это реализовали


Илья
14.06.2018
21:39:24
Коллеги привет, делаю запрос к url через axios, в headers добавил Authorization , т.к. Авторизация Basic , но он почему то возвращает 401 (Unauthorized)

Valeriy
14.06.2018
21:40:46

theffs
14.06.2018
21:40:56
Каким образом можно зарендерить инпуты, которые формируются из объекта, который получаются при реквесте на сервер, и при этом хранить стейт каждого инпута?

Vlad
14.06.2018
21:41:02

Илья
14.06.2018
21:41:27
axios.post(session_url, {}, {
headers : {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Headers' : 'Origin, X-Requested-With, Content-Type, Accept',
'Access-Control-Allow-Methods' : 'PUT, GET, POST, DELETE, OPTIONS',
'Authorization' : 'Basic QVBJOkM3cXh6dHU='
},
auth: {
username: uname,
password: pass
}
})
Вот, даже два раза передаю auth

Valeriy
14.06.2018
21:42:31
axios.post(session_url, {}, {
headers : {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Headers' : 'Origin, X-Requested-With, Content-Type, Accept',
'Access-Control-Allow-Methods' : 'PUT, GET, POST, DELETE, OPTIONS',
'Authorization' : 'Basic QVBJOkM3cXh6dHU='
},
auth: {
username: uname,
password: pass
}
})
на всякий случай, бакенд же умеет в CORS?
а по поводу Authorization уточни не Bearer ли там

Vlad
14.06.2018
21:43:52
axios.post(session_url, {}, {
headers : {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Headers' : 'Origin, X-Requested-With, Content-Type, Accept',
'Access-Control-Allow-Methods' : 'PUT, GET, POST, DELETE, OPTIONS',
'Authorization' : 'Basic QVBJOkM3cXh6dHU='
},
auth: {
username: uname,
password: pass
}
})
Authorization: Bearer ${token}

Google

Vlad
14.06.2018
21:44:00
Попробуйте так

Илья
14.06.2018
21:44:14
Я через Postman делаю запрос, получаю все, он пердлагает мне в хэдере прописать просто Basic QVBJOkM3cXh6dHU=
"authorization": "Basic QVBJOkM3cXh6dHU="

Vlad
14.06.2018
21:44:57

Valeriy
14.06.2018
21:45:16
поэтому я думаю, что там скорее всего не Basic
лично я давно Basic не встречал уже

Vlad
14.06.2018
21:45:47
Или токен неверный) такое тоже возможно)

Илья
14.06.2018
21:45:53
Вот в Postman так и все ок

Valeriy
14.06.2018
21:46:03
кроме того для дев окружения можно вообще избавиться от CORS полностью

Vlad
14.06.2018
21:46:08
Через курл сделай

Valeriy
14.06.2018
21:46:17
а в проде возможно и CORS никакого нет

Vlad
14.06.2018
21:46:20
А то постманами они тестируют)
Вот в Postman так и все ок
Если через curl не пройдет, то ты что-то в хелерах не то скорее всего отправляешь, просто постмен много чего сам навешает

Valeriy
14.06.2018
21:48:07
кстати, рекомендую вместо curl установить утилитку http
для линукса и macos есть
гораздо удобнее и приятнее выглядит с подсветкой сразу хедеров и json

Vlad
14.06.2018
21:48:35
А олдскул?

Google

Valeriy
14.06.2018
21:48:50
только более наглядный

Vlad
14.06.2018
21:49:46

Valeriy
14.06.2018
21:51:44
curl в смысле?

Илья
14.06.2018
21:52:36
попробовать barear?

Vlad
14.06.2018
21:52:37
Да, автоисправление

Valeriy
14.06.2018
21:52:53

Илья
14.06.2018
21:53:54
так а если у меня basic auth то в axios просто auth не подойдет?
Как вообще передавать такое? в хэдере или через auth?

Valeriy
14.06.2018
21:54:13
какой смысл передавать токен и логин одновременно?
`
headers = {
Authorization: `Bearer ${token}`
}`
чертов телеграм :))
просто обычно когда юзер зашел в веб, ты ищешь токен в локалсторадже например
ты его берешь и делаешь запрос типа is-auth с этим токеном в хедере
пришел ответ 401, отправляешь юзера логиниться
сабмитит форму, отправляешь данные auth: { username, password } что то типа этого

Google

Valeriy
14.06.2018
21:58:18
получаешь токен

Илья
14.06.2018
21:58:19
Не, у меня задача попроще, есть веб сервис, надо к нему обратиться, логин и пароль постоянный и получить оттуда данные в json

Valeriy
14.06.2018
21:58:57
ну если там есть логин и пароль значит есть ендпоинт получения токена по ним
типа sign_in или login

Илья
14.06.2018
22:02:22
Нет там такого, просто логин и пароль

Valeriy
14.06.2018
22:04:22
у тебя сайт будет на другом домене висеть отдельно от этого сервиса?

Илья
14.06.2018
22:05:54
Нет, на том же

Admin
ERROR: S client not available

Valeriy
14.06.2018
22:06:09
если продакшн у тебя на том же домене в итоге будет

Илья
14.06.2018
22:06:33
Тестирую пока что на другом домене

Valeriy
14.06.2018
22:06:41
для дев окружения добавь proxy в package.json
"proxy": {
"/staging": {
"target": "http://staging.service.local",
"pathRewrite": {
"^/staging": ""
}
},
"/local": {
"target": "http://localhost:9292",
"pathRewrite": {
"^/local": ""
}
}
},
что то типа такого сделай для себя
в самом приложении определяй что если дев окружение то префикс перед урлом делай /local

Илья
14.06.2018
22:08:01
local это дев?

Valeriy
14.06.2018
22:08:04
ага
работает прозрачно
т.е. вебпак дев сервер перехватывает твои запросы к урлу начинающемуся с локал и делает их с бакенда

Google

Valeriy
14.06.2018
22:08:53
браузер отдыхает в этот момент
и про корс в итоге ничего не знает

Илья
14.06.2018
22:10:00
а ну еще веб сервис поднят через https это имеет значение?

Valeriy
14.06.2018
22:10:20
у меня так три окружения работают одинаково

Илья
14.06.2018
22:11:40
Сделал, но все равно авторизацию не проходит

Valeriy
14.06.2018
22:11:53
в проде CORS нет, на стейджинге и локал деве CORS
надо там смотреть почему именно не проходит

Илья
14.06.2018
22:12:25
Да

Valeriy
14.06.2018
22:12:38
на чем там сделано?

Илья
14.06.2018
22:12:44
Там апач стоит просто и прога которая отдает по http сервису jsin
json

Valeriy
14.06.2018
22:13:20
надо смотреть контроллер собственно как он определяет что ты не авторизован
либо логин пароль кривой вводишь
либо токен не в тот header передаешь
он же его по факту может где угодно ждать, это от бакендера зависит
не все знают стандарты :))
и лепят как попало как привыкли

Илья
14.06.2018
22:28:27
А если я буду логин и пароль передавать только axios.post(session_url, {}, {
auth: {
username: uname,
password: pass
}
})