Как отправить clientIP в заголовках запроса с помощью axios
Моя текущая структура проекта выглядит следующим образом
- MyApp
- client
- config
- server
- shared
- src
myReactApp.jsx
- services
api.js
userService.js
Я хочу отправлять IP-адрес клиента на сервер API во всех запросах в качестве заголовка. Я использую Axios для отправки запросов на сервер. api.js
файл имеет это
import axios from 'axios';
export default () =>
axios.create({
baseURL: config('apiUrl')
});
и в моем пользовательском сервисе я называю api.js вот так
import api from './api'
export default {
fetchUserProfileDetails() {
return api().get('/user/profile')
}
}
который я затем использую в своих компонентах как
import UserService from '../userService'
...
componentDidMount () {
UserService.fetchUserProfileDetails()
.then(results => {
// do stuff with the results
})
}
я хочу знать, как отправлять IP-адреса клиента в каждом запросе, когда у меня есть такой тип установки. Приложение основано на реакции, а также отображается на стороне сервера с использованием express
в качестве сервера я могу получить IP клиента, используя req.connection.socket.remoteAddress.split(",")[0]
и я также могу отправить это в приложение прореагировать.
Как на самом деле использовать это в axios?
Я использую контекстный API реагирования для отправки IP-адреса внутри реагирующего приложения. Это правильный способ отправки информации с сервера в реагирующее приложение?
1 ответ
Если вы уже можете получить IP-адрес клиента в своем коде, вы можете установить заголовок по умолчанию Axios так же, как axios.defaults.headers.common['CLIENT_IP'] = clientIP
,
Если у вас нет IP-адреса клиента, вы можете получить его с помощью стороннего приложения с другим кодом. Просто посмотрите на эту статью https://ourcodeworld.com/articles/read/257/how-to-get-the-client-ip-address-with-javascript-only
Но чтобы получить его, лучше использовать ваш сервер. В экспрессе это просто req.ip
,