удаление строки запроса из запроса перед его обработкой - PullRequest
0 голосов
/ 29 сентября 2019

Я хотел бы удалить определенную строку запроса (а именно, fbclid), которую Facebook добавляет к общим ссылкам для отслеживания (я предполагаю), чтобы все мои маршруты работали, но я не смог найти прямой ответ

Я использую Asp Net Core 2.0, AWS лямбда, API-шлюз

Я пытался использовать перезаписывающее устройство, но он выдает, когда замена пустая строка

app.UseRewriter(new RewriteOptions().AddRewrite("\\?fbclid=(\\w*)", string.Empty, false));

яне хочу перенаправлять на чистый URL-адрес или получать URL-адрес без параметра запроса, мне нужно изменить текущий запрос для остальной части конвейера, чтобы правильно его обработать

1 Ответ

0 голосов
/ 30 сентября 2019

Для удаления строки запроса, вы можете попробовать Middleware как

app.Use(async (context,next) =>
{                
    if (context.Request.Query.TryGetValue("fbclid", out StringValues query))
    {
        var items = context.Request.Query.SelectMany(x => x.Value, (col, value) => new KeyValuePair<string, string>(col.Key, value)).ToList();
        // At this point you can remove items if you want
        items.RemoveAll(x => x.Key == "fbclid"); // Remove all values for key
        var qb = new QueryBuilder(items);
        context.Request.QueryString = qb.ToQueryString();
    }
    await next.Invoke();
});
...