ios - 使用 IIS 重写替换 URL 中的 %5E
问题描述
我有以下问题:
我通过 HttpResponse.Redirect 方法向 Web 应用程序发送请求:http(s)://localhost/application?arg1=abc^def。这在 IE/Edge/Chrome/Firefox 上运行良好。
但是在 Safari 上,我遇到了请求按以下编码字符串发送的问题:
http(s)://localhost/application.aspx?arg1=abc%5Edef
应用程序不喜欢/接受这一点,我无法对应用程序执行更改。
是否可以以某种方式重写由 IIS 重写模块托管应用程序的网络服务器上的 URL?
我已经尝试使用以下正则表达式模式创建规则:
^应用程序?(.*)%5E(.*)
以及以下操作:
重写 URL: application.aspx?{R:1}%5E{R:2}
...但这似乎不起作用(尽管正则表达式模式已通过“测试模式”测试)
提前谢谢了!
解决方案
这是因为你的重写规则有问题。以下配置会将http://localhost/application.aspx?arg1=abc%5Edef 重写为http://localhost/application?arg1=abc^def:
<rewrite>
<rules>
<rule name="TEST" stopProcessing="true">
<match url="(application.aspx)" />
<action type="Rewrite" url="http://localhost/application?{C:1}^{C:3}" appendQueryString="false" />
<conditions>
<add input="{QUERY_STRING}" pattern="(.*)(%5E)(.*)" />
</conditions>
</rule>
</rules>
</rewrite>
推荐阅读
- android - Android Instrumented Test 有时会工作,有时会在生成覆盖率时失败
- python - 从 Python 中的文本文件中读取选定的条目
- jquery - 如何在不影响回调的情况下停止滚动动画(jQuery.animate())
- git - 将大文件夹添加到 git 存储库而不缓存到存储库?
- android - Android-Room 错误:包 javax.annotation.processing 不存在
- mysql - Laravel @foreach - 如何显示属于关系模型的每个值
- javascript - querySelectorAll 事件侦听器函数未正确迭代
- javascript - 我需要帮助尝试在 React 游戏中连接我的不同组件
- django - 我如何确定请求是由 Stripe 而不是第三方发送的?
- ansible - Ansible 2.9.10 错误:“msg”“指定的无效成为方法,找不到匹配的插件:'禁用'