Gue*_*lla 6 c# asp.net-core-mvc kestrel-http-server asp.net-core
在我的asp.net核心应用程序(角4前端)我接受这样的URL:
example.com/report;url=http%3A%2F%2Fexample2.com
Run Code Online (Sandbox Code Playgroud)
我想创建一个允许人们输入以下网址的重写规则:
example.com/report;url=http://example2.com
Run Code Online (Sandbox Code Playgroud)
我无法找到如何做到这一点.
我试过了:
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);
Run Code Online (Sandbox Code Playgroud)
这不起作用,但即使这样做也不会解释在域之后有斜杠的URL,即子目录.使用组匹配模式我认为不可能这样做.它必须是匹配组上的查找和替换类型操作.
其他Web服务器将此作为解码斜杠的可配置选项.我在asp.net核心文档中找不到任何引用.这可能吗?
您将需要传递 URL 的参数。确实没有办法通过允许用户在地址栏中输入 URL 作为参数来获得您想要的东西。它总是需要被编码。
代替:
http://example.com/report;url=http%3A%2F%2Fexample2.com
Run Code Online (Sandbox Code Playgroud)
使用:
http://example.com/report?url=http%3A%2F%2Fexample2.com
Run Code Online (Sandbox Code Playgroud)
我不会让用户在浏览器地址栏中输入所有这些内容,而是创建一个用户界面,允许用户请求报告并点击提交。该报告需要一个 URL 文本框,并将 URL 文本框的内容编码到“url”参数中后,它将向您的网站发送一个 get 请求。
使用 URL 重写模块可能不符合这里的原则。
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |