c# - 重写查询参数中的正斜杠

标签 c# asp.net-core asp.net-core-mvc kestrel-http-server

在我的 asp.net 核心应用程序(angular 4 前端)中,我接受这样的 URL:

example.com/report;url=http%3A%2F%2Fexample2.com

我想创建一个重写规则,允许人们输入以下 url:

example.com/report;url=http://example2.com

我不知道该怎么做。

我试过:

var options = new RewriteOptions()
    .AddRewrite(@"(.*);url=http:\/\/([^;]*)(.*)", "$1;url=http%3A%2F%2F$2$3", skipRemainingRules: false)
    .AddRewrite(@"^report.*", "index.html", skipRemainingRules: true)

app.UseRewriter(options);

这不起作用,但即使它起作用了,它也不会考虑在域后有斜杠的 url,即子目录。使用组匹配模式我认为这是不可能的。它需要是对匹配组的查找和替换类型操作。

其他网络服务器将此作为解码斜杠的可配置选项。我在 asp.net 核心文档中找不到对它的任何引用。这可能吗?

最佳答案

您将要为 URL 传递一个参数。确实没有办法通过允许用户在地址栏中输入 URL 作为参数来获得您想要的内容。它总是需要编码。

代替:

http://example.com/report;url=http%3A%2F%2Fexample2.com

使用:

http://example.com/report?url=http%3A%2F%2Fexample2.com

我不会让用户将所有这些都输入到浏览器地址栏中,而是创建一个用户界面,允许用户请求报告并点击提交。该报告需要一个用于 URL 的文本框,它会在将 URL 文本框的内容编码为“url”参数后向您的网站发送一个获取请求。

使用 URL 重写模块可能违背了这里的原则。

关于c# - 重写查询参数中的正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43168482/

相关文章:

asp.net - 如何使 Asp.NET Core MVC 应用程序在授权重定向上使用外部 url?

c# - 如何在 ASP.Net Core 2.x 的 Action Filter 中获取配置、Cookie 和 DBContext

c# - 关于绑定(bind)到非属性(即字段)的官方说法是什么?

c# - 如何替换DataGridView中的整行值?

c# - LINQ 查询 - 需要解释为什么这些示例不同

asp.net-core - Blazor 服务器、使用 OpenIdDict 的 API 和使用内省(introspection) - 如何处理访问 token ?

c# - 当用户断开连接时,信号器中有没有办法从列表中删除用户?

c# - 创建发布多个模型的函数

c# - 缺少小数点分隔符

c# - 无法解析 Enumerable 和 Queryable 候选人之间的方法