Express中带有Base64编码字符串的CORS错误

时间:2019-01-14 19:44:14

标签: node.js express cors base64

我有一个用node.js Express编写的API,它采用base64编码的字符串作为URI的一部分。

基本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错误吗?

对于/这样的特殊字符,有很好的解决方法吗?

0 个答案:

没有答案