2016-03-25 14 views
0

プロキシサーバー(A)を経由するとき、アプリケーションサーバー(B)から送信された自己参照リンクは、プロキシを代わりにホストとして使用します。ここURLリライトで非​​HTML応答のタグ内のコンテンツを一致させる

は例です:(B)から

応答含ま:<a href="http://apps/path">path</a>
プロキシ(A)は、として書き換える必要がある:<a href="http://proxy/path">path</a>

通常、これは、HTML応答を検査するアウトバウンドルールを作成することによって行われますURLを含むタグの場合は、アプリサーバーへの参照を探して書き換えます。ここで

は通常のルール GUI versionです: IsHTMLはのように定義されて

<outboundRules> 
    <rule name="Outbound Links" preCondition="IsHTML" enabled="true"> 
     <match filterByTags="A, Form, IFrame, Img, Input, Link, Script" pattern="(https?:\/\/proxy|^)\/(.*)" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="true" /> 
     <action type="Rewrite" value="http://apps/{R:2}" /> 
    </rule> 

<preConditions> 
    <preCondition name="IsHTML"> 
     <add input="{RESPONSE_CONTENT_TYPE}" pattern="text\/html" /> 
    </preCondition> 

は、ページのコンテンツの一部を介して返されるということである問題XHR要求最小限、これはHTMLの前提条件に失敗します。

Content Type - text/html vs XHR

が、私はまた、有効なHTMLではありませんので、しかし、URL書き換えはまだトラブルタグに返されたテキストを解析していxhr

のコンテンツタイプを含めるようにルールを拡張することができます。私はこれを行うときしかし、私はエラーを取得する

|6383|updatePanel|ctl00_mainContentPlaceHolder_contentUpdatePanel| 

<div id="ctl00_mainContentPlaceHolder_resultsPanel"> 
    <a href="http://apps/path">path</a> 
</div> 

... 

|0|hiddenField|__EVENTTARGET||0|hiddenField|__EVENTARGUMENT||0|hiddenField| 

Sys.WebForms.PageRequestManagerParserErrorException:
The message received from the server could not be parsed.

答えて

0

あなたはASPから戻ってくるXHRリクエストを変更することはできません

はここで応答がどのように見えるかの例です。ネット。そうすることは、ミドルアタック(あなたのプロキシがその役割を果たす)を試みることですが、マイクロソフトは予防すべき正当な理由があります。

ここASP.NETが応答で使用する構文を探索するダミーメッセージは次のとおり

1|#||2|52|updatePanel|ctl00_mainContentPlaceHolder_firstUpdatePanel| 
    <p> New Content For First Update Panel </p> 

ヘッダは、メッセージの残りの更新回数を1|#| |で始まり、(2)
そして各更新部は、パターンに従う:

|char_len|update_type|id_of_field_to_update| 
New contents to insert into field 

各セクションにおけるlenが正確に追従する文字の数に等しくなければなりません。したがって、これらのメッセージのコンテンツを見つけて置き換えることは非常に気まずいです。

クライアントが現在のドメインに対してリダイレクトできるように、サーバーに依存しない相対URLを返すことをお勧めします。

関連する問題