it-roy-ru.com

Как работать с CORS в электронном приложении

Я создаю электронное приложение, и мне нужно вызывать API, если поставщик API не включил CORS. Обычно предлагаемое решение состоит в том, чтобы использовать обратный прокси-сервер, который тривиально выполнять при локальном запуске с использованием узлов и cors-где угодно, например так:



let port = (process.argv.length > 2) ? parseInt (process.argv[2]) : 8080; 
require ('cors-anywhere').createServer ().listen (port, 'localhost');

Затем приложение может быть настроено на прокси всех запросов через обратный прокси на localhost: 8080.

Итак, мои вопросы:

  1. Можно ли использовать узел и корс в любом месте электронного приложения для создания обратного прокси-сервера? Я не хочу заставлять приложение совершать звонки на удаленный сервер.

  2. Есть ли лучший или стандартный способ сделать это в приложении Electron? Я предполагаю, что я не первый, кто сталкивается с проблемами CORS. :)

3
Shagymoe

Только что была эта проблема сегодня API-вызовы с axios внутри приложения React, входящего в комплект Electron, возвращают 400

Из того, что я вижу, вызовы Electron действуют как обычные вызовы URL-адресов API, что означает, что CORS не влияет на них. 

Теперь, когда вы оборачиваете свои вызовы с помощью прокси-сервера CORS и делаете обычный вызов прокси-серверу, он должен выдавать ошибку 400, потому что это не вызов CORS. Эта ветка объясняет, почему cors -where так реагирует => https://github.com/Rob--W/cors-anywhere/issues/39

Я фактически удалил свои прокси-серверы CORS из приложения перед сборкой Electron. Мне все еще нужен CORS-прокси для разработки, так как я тестирую в браузере. 

Надеюсь это поможет. 

1
user6456392