3

httpをhttpsにリダイレクトするために、サイトに次のルールがあります。アプリが API の http だけで送信されたことがわかりました。これを更新できるようになるまで、サイトで /api フォルダーへの呼び出しを無視し、それ以外はすべてリダイレクトする必要があります。URLに/api/が含まれていない場合はリダイレクトするなどの方法があると思います。

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
    </rule>
  </rules>
</rewrite>
4

2 に答える 2

2

<add input="{R:0}" pattern="/api(/|$)(.*)" negate="true" />ファイル全体が次のようになるように、次のようなエントリを追加します。

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{R:0}" pattern="/api(/|$)(.*)" negate="true" />
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
    </rule>
  </rules>
</rewrite>

URL の例:http://site.com/api/function

そのため、サイトの後の URL が次のいずれかに一致する場合、処理を停止します (したがって、ユーザーを https にプッシュしません)。

  • /api
  • /api/anything
  • 任意httpsの URL

リバース プロキシの背後にある IIS で実行されている大規模なアプリケーションでも、同じようなことが起こります。IIS 用の URL 書き換えアドオン (使用しているようです) は少し面倒ですが、うまく機能し、MVC フレームワークを許容します。

おっしゃるとおり、MVC にはディレクトリがないため、単純に API ディレクトリに書き換えブロックを配置しても機能しません。MS にはこれに対するより良い解決策があると思うかもしれませんが、そうではありません。それは物事をいっそう困難なものにします。

于 2012-12-29T23:25:05.697 に答える
1

のWeb.configファイルを/apiアプリケーションまたはディレクトリに配置すると、サイト全体に適用されるルールを上書きできます。

この記事のヒント1を確認し、時間があればすべて読んでください。

http://weblogs.asp.net/jgalloway/archive/2012/01/17/10-things-asp-net-developers-should-know-about-web-config-inheritance-and-overrides.aspx

John Gallowayのブログは、IISとASP.NETのすべてに対応する素晴らしいリソースです。

于 2012-12-29T22:25:26.610 に答える