Узел Express - интерфейс сеанса и реакции не хранит Cook ie с Axios - PullRequest
1 голос
/ 11 марта 2020

Товарищ веб-разработчик здесь. Кажется, я сталкиваюсь с этой проблемой (которая не возникала до недавнего времени), когда идентификатор сеанса cook ie изменяется при каждом запросе API.

Edit Подтверждает работать в IE11 & Edge !? Не чом ?! WTF! Не работает с извлечением и учетными данными: "include" либо ..

У меня есть веб-сайт с безопасным входом, однако теперь некоторые люди не могут войти в систему из-за того, что повар ie не был хранится в их браузере. И странная вещь, это не случалось в Chrome до недавнего времени! Я не уверен, что произошло или что изменилось ..

В сетевых заголовках сервер возвращается с заголовком Set-Cook ie, так что, похоже, сервер работает.

Ниже приведен пример кода, который не работает с моим интерфейсом (React w / Ax ios). У меня есть интерфейс, работающий на моей основной машине Ma c, и сервер узлов на ноутбуке Windows.

Я пробовал доверенный прокси app.set (закомментировано), но это не кажется, ничего не меняет. Также я искал вокруг и пробовал кое-что с доменом, но я не могу найти ничего, что работает. Я тестирую это на localhost , , и у бэкэнда есть другой URL-адрес, чем у внешнего интерфейса. Может ли это быть проблемой с конфигурацией домена / CORS?

Узловой сервер

const session = require('express-session')
const cors = require('cors')

const app = express()
app.use(express.json())
app.use(cors({ credentials: true, origin: ['http://localhost:3000', 'http://192.168.100.122'] }))

// app.set('trust proxy', 1)
app.use(session({
    secret: 'SECRET_KEY_HEEEE',
    resave: false,
    proxy: true,
    saveUninitialized: true,
    // Being tested via local IP Address, this would change to secure in prod
    cookie: { secure: false, httpOnly: false, maxAge: 600000 }
}))

app.get('/', (req, res) => {
    console.log(req.sessionID)
    // Session ID changes every time I hit this request
    if (req.session.views) {
        req.session.views++
        res.send(req.session.views.toString())
    } else {
        req.session.views = 1
        res.send('Started View Count!')
    }
})

app.listen(5050, _ => console.log('Getting smacked on port 5050'))

React Frontend с Ax ios & withCredentials = true

import axios from 'axios'

axios.defaults.withCredentials = true

class App extends Component {

handleGetCookie = () => { 
        axios.get('http://192.168.100.131:5050/').then(response => {                     
    console.log(response.data) 
    // Response.data only shows "Started View Count"
    }) 
}

render() { 
    return (
         <div className="App">
             <h1>Express Sessions & MongoDB!</h1>
             <button onClick={this.handleGetCookie}>Get me a cookie!</button>
         </div>
    )
  }
}

export default App

I ' мы пытались изменить withCredentials, чтобы включить, того же происхождения, но ничего не меняется ...

В настройках моего браузера включены файлы cookie и файлы cookie третьих сторон!

Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...