Điểm:1

IIS ARR 3.0 - Thay đổi Url cơ sở trong nội dung Phản hồi API Web bằng Viết lại Url

lá cờ vn

Tôi có một máy chủ IIS cục bộ lưu trữ API web Asp.net Core 3.1 đang chạy ở cổng 5000. Sử dụng wireguard, máy chủ cục bộ được kết nối với máy chủ công khai. Máy chủ đối mặt công khai cũng có IIS 10 với ARR3.0 được bật và có trang được tạo dưới dạng https://api.example.com. Sử dụng IIS làm proxy ngược, API cục bộ đã bị lộ và đang được ứng dụng dành cho thiết bị di động sử dụng.

Quy tắc Viết lại Url sau đây đã được viết trong 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 hoạt động tốt và trả lại tất cả phản hồi. Sự cố xảy ra khi phản hồi API trả về Url hình ảnh được tạo động, điều này đúng nếu được triển khai trực tiếp trên máy chủ, nhưng đằng sau Proxy ngược, nó trả về Url cục bộ, điều này không chính xác. Tôi muốn viết lại Url cơ sở trong nội dung phản hồi API. Làm thế nào tôi có thể làm điều đó?

Kiểm tra lệnh gọi API từ Swagger Docs

Mã để tạo Url hình ảnh động: - Mã để tạo Url hình ảnh động

Vui lòng cho tôi biết, làm cách nào tôi có thể viết lại url cơ sở bên trong nội dung phản hồi API?

Lex Li avatar
lá cờ vn
Đó hoàn toàn là một câu hỏi lập trình sau đó. Yêu cầu nhà phát triển tìm hiểu cách sử dụng đúng tên máy chủ gốc, không phải tên sau khi viết lại, https://stackoverflow.com/a/53220168/11182
AbhiAbzs avatar
lá cờ vn
Hoàn toàn không, nhiệm vụ của IT & OP, ở đây một số người khác cũng hỏi một câu hỏi tương tự nhưng nó không hiệu quả với tôi với các sửa đổi bắt buộc: https://serverfault.com/questions/508982/using-url-rewrite-to-change-part-of-url.
AbhiAbzs avatar
lá cờ vn
Ngoài ra, nếu chúng tôi có thể viết lại nội dung html, v.v. bên trong phản hồi, thì tại sao không phải là phản hồi API? https://techcommunity.microsoft.com/t5/iis-support-blog/iis-and-url-rewrite-rewriting-the-outbound-response-contents/ba-p/846351
Lex Li avatar
lá cờ vn
Theo quan điểm của IT&OP, mọi chức năng/tính năng đều có giới hạn của nó và thật không may, giờ đây bạn thấy giới hạn của các quy tắc gửi đi, được thiết kế để chỉ viết lại các thẻ HTML đơn giản (luồng ServerFault khác), chứ không phải phản hồi JSON (trường hợp của bạn). "tại sao không"? Bởi vì đó thực sự là trách nhiệm của các nhà phát triển.
AbhiAbzs avatar
lá cờ vn
Tôi đồng ý là không thể, IIS có thể thực hiện viết lại trong phản hồi html trong trường hợp một số thẻ nhưng không phải trong trường hợp khác. Cảm ơn sự hướng dẫn của bạn

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.