Puncte:1

IIS ARR 3.0 - Schimbați adresa URL de bază în corpul răspunsului API Web utilizând Rescrierea adresei URL

drapel vn

Am un server IIS local care găzduiește API web Asp.net Core 3.1 care rulează la portul 5000. Folosind wireguard, serverul local este conectat cu serverul public. Serverul public are, de asemenea, IIS 10 cu ARR3.0 activat și site-ul este creat ca https://api.example.com. Folosind IIS ca proxy invers, API-ul local a fost expus și este consumat de aplicația mobilă.

Următoarea regulă de rescriere a adresei URL a fost scrisă în web.config:-

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://192.168.2.79:5000/{R:1}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="true">
                    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.2.79:5000/(.*)" />
                    <action type="Rewrite" value="http{R:1}://api.example.com/{R:2}" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern=".*/.*" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

API-ul funcționează bine și returnează toate răspunsurile. Problema apare atunci când răspunsul API returnează URL-urile imaginii generate dinamic, care sunt corecte dacă sunt implementate direct pe server, dar în spatele Reverse Proxy-ului returnează adresa URL locală, care nu este corectă. Vreau să rescriu URL-urile de bază în corpul răspunsului API. Cum pot face acest lucru?

Testați apelul API de la Swagger Docs

Cod pentru generarea dinamică a adresei URL a imaginii:- Cod pentru generarea dinamică a adresei URL a imaginii

Vă rugăm să-mi spuneți, cum pot rescrie adresa URL de bază în corpul răspunsului API?

Lex Li avatar
drapel vn
Atunci este doar o întrebare de programare. Cereți dezvoltatorului să învețe cum să folosească corect numele gazdei inițiale, nu pe cel de după rescrire, https://stackoverflow.com/a/53220168/11182
AbhiAbzs avatar
drapel vn
Deloc, sarcina lui IT & OP, aici alții au pus o întrebare similară, dar nu a funcționat pentru mine cu modificările necesare: https://serverfault.com/questions/508982/using-url-rewrite-to-change-part-of-url.
AbhiAbzs avatar
drapel vn
De asemenea, dacă suntem capabili să rescriem conținutul html, etc în interiorul răspunsului, de ce nu răspunsul API? https://techcommunity.microsoft.com/t5/iis-support-blog/iis-and-url-rewrite-rewriting-the-outbound-response-contents/ba-p/846351
Lex Li avatar
drapel vn
Din punctul de vedere al IT&OP, fiecare funcționalitate/funcție are limitele ei și, din păcate, acum vedeți limitele regulilor de ieșire, care sunt concepute pentru a rescrie doar etichete HTML simple (celălalt thread ServerFault), dar nu și răspunsul JSON (cazul dvs.). "de ce nu"? Pentru că asta sunt cu adevărat responsabilitățile dezvoltatorilor.
AbhiAbzs avatar
drapel vn
Sunt de acord că nu este posibil, IIS poate efectua rescrierea în răspunsul html în cazul unor etichete, dar nu în alte cazuri. Multumesc pentru indrumare

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.