iis - iis urlrewrite HTTPS,除了服务(.asmx 和 .svc)或带有参数/值的特定服务
问题描述
我希望我的网站默认使用 HTTPS,但服务(*.asmx 和 *.svc)除外,以便在 Http 和 Https 中工作。
一些restful服务是http,因为客户端是用jsp开发的,使用http请求,一个客户端是windows,它使用与https相同的服务。
我想跳过 * .asmx和 * .svc或特定服务,以便任何客户端都可以在 http 或 https 中请求服务。
我正在使用下面的代码:
<rule name="Force HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<!-- <add input="{HTTPS}" pattern="^OFF$" /> -->
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/myservice.svc$" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/myservice.svc?(.*)" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/restserv.svc$" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/restserv.svc/(.*)" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
它们都不起作用:只有/myservice.svc在 http 中工作,但是当用户使用参数/myservice.svc?wsdl或/myservice.svc/getdata/user-name时,它会转发到 https。restserv.svc 也是如此
如何使用参数跳过 *.svc 或我的特定服务?
解决方案
您可以尝试以下规则:
<rule name="Https Except Service" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/(myservice\.svc.*)" ignoreCase="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/(restserv\.svc.*)" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
如果您仍然遇到问题,请尝试在 iis 中运行失败的请求跟踪:
推荐阅读
- python - 阅读使用python不断更新的Excel工作表
- angular - 不使用 switchMap 调用 Angular 异步验证器
- kubernetes - 设置主机路径卷可以消耗多少空间的限制
- vue.js - 为自定义事件使用 Vue 原型
- python - 如何嵌套方法以在 Python 中安全地执行 SQLite 事务?
- ios - 在弹出视图控制器中更新其值时如何更改 UIButton 文本?
- javascript - 滚动线动画 - HTML,CSS,JS
- sql - SQL - 通过连接两个基于 Start 和 End 值的表然后连接基于 Start 和 End 值的行来创建一个新表?
- reactjs - 如何在 Reactjs 上运行一个函数并每 5 秒更改一次内容
- c# - XML 前缀 soap:Body 到 soapenv:Body