Как отправить 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,

Другие вопросы по тегам