我有nginx location指令,目的是从proxy_pass指令的URI"删除"本地化前缀.
例如,要使URI http://example.com/en/lalala使用proxy_pass http://example.com/lalala
location ~ '^/(?<locale>[\w]{2})(/(?<rest>.*))?$' {
...
proxy_pass http://example/$rest;
...
}
Run Code Online (Sandbox Code Playgroud)
这样,rest变量将在传递给proxy_pass directeve时被解码.这似乎是一种预期的行为.
问题是我的URI包含%20从客户端传递的编码空间
http://example.com/lala%20lala
Run Code Online (Sandbox Code Playgroud)
nginx将URI解码为
http://example.com/lala lala
Run Code Online (Sandbox Code Playgroud)
我可以在我的error.log中看到它.
问题是 - 是否有可能rest以某种方式使用编码变量,因为它是从客户端传递的?如果我做了一些完全错误的事情,请以正确的方式提出建议.
谢谢.
我有两个猫鼬模式:
var productSchema = new Schema({
name: { type: String, required: true, unique: true },
...
});
...
var categorySchema = new Schema({
...
products: [ProductSchema]
});
Run Code Online (Sandbox Code Playgroud)
当我尝试保存类别时
var categories = [
{..., products: []},
{..., products: []}
];
Run Code Online (Sandbox Code Playgroud)
甚至没有产品
var categories = [
{...},
{...}
];
Run Code Online (Sandbox Code Playgroud)
我收到了错误
{ [MongoError: E11000 duplicate key error index: test.categories.$products.name_1 dup key: { : undefined }]
name: 'MongoError',
err: 'E11000 duplicate key error index: test.categories.$products.name_1 dup key: { : undefined }',
code: 11000,
n: …Run Code Online (Sandbox Code Playgroud)