У меня есть API, написанный в node.js Express, и он принимает строку в кодировке base64 как часть URI.
Кодировка base 64 предназначена для обработки /
символов в номерах деталей, которые в противном случае перенаправили бы запрос в другую конечную точку. Однако всякий раз, когда номер детали кодируется в строку base64 со знаком +
, я получаю сообщение об ошибке CORS.
Проблема сохраняется при переносе строки 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?
Есть ли хороший обходной путь для специальных символов, таких как /
?