我有一个用node.js Express编写的API,它采用base64编码的字符串作为URI的一部分。
基本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错误吗?
对于/
这样的特殊字符,有很好的解决方法吗?