Ошибки CORS в экспрессе с закодированными строками Base64 - PullRequest
0 голосов
/ 14 января 2019

У меня есть API, написанный в node.js Express, и он принимает строку в кодировке base64 как часть URI.

Кодировка base 64 предназначена для обработки / символов в номерах деталей, которые в противном случае перенаправили бы запрос в другую конечную точку. Однако всякий раз, когда номер детали кодируется в строку base64 со знаком +, я получаю сообщение об ошибке CORS.

enter image description here

Проблема сохраняется при переносе строки base64 в функцию encodeURIComponent.

На сервере я использую следующее промежуточное ПО:

// Options
const formBody = {autoFiles: true}
const corsOptions = {
  allowedHeaders: ['Access-Control-Allow-Origin', 'Content-Type', 'Authorization', 'X-Content-Type-Option'],
  credentials: true,
  optionsSuccessStatus: 200,
  origin: '*',
  preflightContinue: true
}

// Middleware
app.options('*', cors(corsOptions)) // Preflight OPTIONS; put before other routes
app.use(formData.parse(formBody))   // Parse req.body data
app.use(bodyParser.json())
app.use(helmet.noSniff())           // Security middleware collection
app.use((req, res, next) => {       // Enable Cross-Origin Resource Sharing (CORS)
  res.header("Access-Control-Allow-Origin", "*")
  res.header("Access-Control-Allow-Methods", "DELETE, GET, HEAD, OPTIONS, POST, PUT")
  res.header("Access-Control-Allow-Headers", "Accept, Access-Control-Allow-Headers, Authorization, Content-Type, Origin, X-Content-Type-Option")
  next()
})

Может ли специальный символ вызвать ошибку CORS?

Есть ли хороший обходной путь для специальных символов, таких как /?

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