Создать приложение React, добавив CORS-заголовок

Я пытаюсь выяснить, где добавить заголовок "Access-Control-Allow-Origin" в мою конфигурацию сервера для создания-реакции-приложения.

Пока я добавляю это config/webpackDevServer.config.js без особой удачи.

Любая идея о том, где я мог бы добавить это?

Спасибо!

2 ответа

Вот рецепт, основанный на ответе @tlfu для тех, кто использует react-app-rewired. В этом случае вам нужно определить корневой уровеньconfig-overrides.js файл, содержащий следующее:

module.exports = {
  // Extend/override the dev server configuration used by CRA
  // See: https://github.com/timarney/react-app-rewired#extended-configuration-options
  devServer: function(configFunction) {
    return function(proxy, allowedHost) {
      // Create the default config by calling configFunction with the proxy/allowedHost parameters
      // Default config: https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/config/webpackDevServer.config.js
      const config = configFunction(proxy, allowedHost);

      // Set loose allow origin header to prevent CORS issues
      config.headers = {'Access-Control-Allow-Origin': '*'}

      return config;
    };
  },
};

Я ударил эту проблему. В моем случае я делаю что-то немного необычное. Я обслуживаю свое приложение React со страницы Salesforce Visualforce, поэтому страница обслуживается из домена visual.force.com. Я подключил страницу Visualforce, чтобы можно было запускать приложение локально, используя Dev-сервер Webpack и туннель (ngrok) для передачи запросов от Salesforce на localhost. Когда мое приложение пытается загрузить ресурсы из "общедоступной" папки приложения, я получаю такие ошибки:

Не удалось загрузить https://xxxx.ngrok.io/scss/bootstrap.scss: в запрошенном ресурсе отсутствует заголовок "Access-Control-Allow-Origin". Поэтому происхождение "https://xxxx.visual.force.com" не разрешено.

Я пытался добавить devServer: {headers: {'Access-Control-Allow-Origin': '*'}} к объекту конфигурации webpack.config.dev.js, но это не сработало. Я обнаружил, что вместо этого мне нужно было добавить следующее в файл webpackDevServer.config.js: headers: {'Access-Control-Allow-Origin': '*'} (обратите внимание, что "заголовки" - это свойство конфигурации верхнего уровня, не вложенное в свойство "devServer"). Я читал, где, когда вы запускаете Webpack Dev Server через Node API, он не читает объект конфигурации devServer из вашего файла конфигурации webpack.

Извините, если у меня неправильный конец флешки, но из вашего вопроса я предполагаю, что вы используете API бэкэнда с интерфейсом реакции. afaik вам не нужны Cors, просто добавьте прокси в ваш клиент / внешний пакет package.json: "proxy": "http://localhost:5000/" Дэн говорит, что это только для простых случаев, но я надеюсь, что это поможет

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