Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.02.2022, 18:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Raadsert, есть подозрение что ты просто говнокодишь...

Как вариант сделай простенькую модель сайта.
На ней можно буде лучше понять чего ты так гоношишь.
Ответить с цитированием
  #12 (permalink)  
Старый 10.02.2022, 18:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Raadsert, вот почитай доку...
https://nodejsdev.ru/doc/request-object/

Вот пример авторизации...
https://nodejsdev.ru/doc/jwt/
Ответить с цитированием
  #13 (permalink)  
Старый 10.02.2022, 22:43
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от ksa Посмотреть сообщение
Raadsert, вот почитай доку...
https://nodejsdev.ru/doc/request-object/

Вот пример авторизации...
https://nodejsdev.ru/doc/jwt/
Я определённо пишу говнокод, не намеренно. Скорее всего я неправильно передаю скрипт в клиент для передачи заголовка(разумеется это не скрипт для проверки авторизации, так я решил попробовать вообще передать какую то информацию в заголовках):
app.use(express.static(`${__dirname}/auth`), (req, res, next) => {
  res.status(200).sendFile(path.resolve(__dirname, 'auth', 'index.html'));
  next()
})

app.use(express.static(`${__dirname}/auth`), (req, res, next) => {
  if (req.headers.test) {
    req.user = req.headers.test
    next()
  }
  next()
})

app.get('/auth', (req, res) => {
  if (req.user) return res.status(200).send(`<h1>${req.user}</h1>`);
  else return res.status(200).send(`<h1>None</h1>`);
})


index.html загружает скрипт XML. До этого загружал файл в app.get .
Подскажите, что я делаю не так?

Последний раз редактировалось Raadsert, 10.02.2022 в 22:45.
Ответить с цитированием
  #14 (permalink)  
Старый 11.02.2022, 08:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Raadsert
что я делаю не так?
Ты лучше напиши что ты собрался этим кодом получить?
Ответить с цитированием
  #15 (permalink)  
Старый 11.02.2022, 08:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Raadsert, такую вот статейку почитай...
https://medium.com/nuances-of-progra...s-80915da83c60
Ответить с цитированием
  #16 (permalink)  
Старый 11.02.2022, 16:22
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от ksa Посмотреть сообщение
Ты лучше напиши что ты собрался этим кодом получить?
Я собирался получить значение http-заголовка "test", который присваивается в index.html:

let request = new XMLHttpRequest();
request.open('GET', document.location, false);
request.setRequestHeader('test', 'test-info');
request.send(null);
request.getAllResponseHeaders().toLowerCase();


Вот тут, если заголовок существует, он должен передать его к req.user:

app.use(express.static(`${__dirname}/auth`), (req, res, next) => {
  if (req.headers.test) {
    req.user = req.headers.test
    next()
  }
  next()
})


После чего в app.get, если req.user существует, вместо обычной страницы index.html вывести информацию из http-заголовка "<h1>${req.user}</h1>":

app.get('/auth', (req, res) => {
  if (req.user) return res.status(200).send(`<h1>${req.user}</h1>`);
  else return res.status(200).send(`<h1>None</h1>`);
})


Дело в том что последняя часть не возвращает h1 с каким бы то ни было значением. Почему так происходит, и как вернуть результат присваиваемого http-заголовка через сервер обратно в клиент?

p.s. На сколько я понял так и работает система аутентификации, только клиент отправляет jwt-токен на сервер (вместо заголовка "test": "test-info"), он сравнивает токен с тем что хранится у него и при положительном результате отправляет клиенту некую информацию с ограниченным доступом (в случае выше это просто h1 с информацией из http-заголовка "test").
Ответить с цитированием
  #17 (permalink)  
Старый 11.02.2022, 18:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Raadsert, я тебе статейку выше для чего дал?
Для начала просто почитай для чего
Сообщение от Raadsert
express.static
Потом нужно понять что бывает после
Сообщение от Raadsert
res.status(200).sendFile(...)
Тогда может быть придет понимание почему
Сообщение от Raadsert
последняя часть не возвращает h1 с каким бы то ни было значением


Т.е. просто писать аглицкие слова в произвольном порядке - не значит программировать.
Ответить с цитированием
  #18 (permalink)  
Старый 11.02.2022, 22:02
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от ksa Посмотреть сообщение
Raadsert, я тебе статейку выше для чего дал?
Для начала просто почитай для чего


Потом нужно понять что бывает после


Тогда может быть придет понимание почему



Т.е. просто писать аглицкие слова в произвольном порядке - не значит программировать.
express.static
используется совместно с "use" для указания директории статичных файлов, я знаю.

res.status(200).sendFile(...)
"sendFile" используется для отправки файлов в клиент, иначе как мне доставить скрипт на сторону клиента?! Дело в том что я неправильно указал статут ответа? Я всё прочитал, но всё равно не могу понять. Единственное что мне приходит в голову это то что ответ с сервера я должен обрабатывать скриптом на стороне клиента и все передаваемые сервером данные размещать при помощи скрипта.
Ответить с цитированием
  #19 (permalink)  
Старый 12.02.2022, 09:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Что-то туго идет...

Как только ты объявил некую директорию через express.static, файлы из нее будет отправлять сам экспресс...

Как только что-то отправили клиенту - вся твоя дальнейшая "обработка" теряет всякий смысл.

Если ты хочешь что-то взять из заголовка и запихать его куда-то - это нужно делать после основных обработчиков/парсеров экспресс.

Вот тебе еще ссылочка на доку про сам экспресс
https://expressjs.com/ru/guide/routing.html
Ответить с цитированием
  #20 (permalink)  
Старый 12.02.2022, 19:48
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от ksa Посмотреть сообщение
Что-то туго идет...

Как только ты объявил некую директорию через express.static, файлы из нее будет отправлять сам экспресс...

Как только что-то отправили клиенту - вся твоя дальнейшая "обработка" теряет всякий смысл.

Если ты хочешь что-то взять из заголовка и запихать его куда-то - это нужно делать после основных обработчиков/парсеров экспресс.

Вот тебе еще ссылочка на доку про сам экспресс
https://expressjs.com/ru/guide/routing.html
Я понял... express.static просто даёт возможность переходить к файлам по ссылке без необходимости отправлять каждый через sendFile. А после самой отправки send или sendFile я уже не смогу отправить новую информацию, правильно? Но как тогда отправить на ту же страницу результат с новоиспеченным заголовком "test"?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все делаю логично, но не работает. Сергей Ракипов Общие вопросы Javascript 30 04.07.2020 12:06
При клике передать заголовок в инпут alex-tiesto Общие вопросы Javascript 2 18.03.2019 09:34
IE + HTTPS -> HTTP nikdmt Internet Explorer 0 11.04.2014 14:55
почему селект вдруг перестал работать в эксплорере и гуглхроме? Краса (X)HTML/CSS 44 04.05.2013 19:18
Проблемы при установке модулей node.js tadjik1 AJAX и COMET 1 18.03.2012 02:20