我在Azure网站上托管了一个网络应用。我正在从另一个级别消费API(有方法PUT,POST,GET,DELETE)..我想让我的web应用程序与IE8和IE9兼容,但不幸的是,它不支持PUT的CORS,即使使用XDomainRequest补丁也可以删除。 / p>
现在,我想使用像反向代理这样的东西,以便它会认为请求来自同一个域。可能是反向代理
Azure网站有可能吗?如果是,那怎么样?
答案 0 :(得分:5)
最后,我找到了自己做的方式:-)
我使用重写模块和ARR实现了它。
以下是我所做的概要 -
打开应用的Web.config并在<system.webServer> </system.webServer>
<rewrite>
<rules>
<rule name="Route Requests from localhost api to Remote API url" stopProcessing="true">
<match url="^api/(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="https://www.remotedomain.com/api/{R:1}" logRewrittenUrl="true" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<rule name="Convert remote API response to localhost API" preCondition="ResponseIsHtmlOrJSON">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://www.remotedomain.com/api/(.*)" />
<action type="Rewrite" value="api/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtmlOrJSON">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^application/json" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
基本上,这将添加重写规则(入站和出站)。</ p>
http://localhost/api/{API_PATH}
至https://www.remotedomain.com/api/{API_PATH}
https://www.remotedomain.com/api/
)的所有响应映射到虚拟API网址http://localhost/api
。因此,浏览器将假定发送请求,并且返回的响应来自本地API本身。我在这里写了详细的教程:http://www.wrapcode.com/infrastructure/configure-reverse-proxy-with-url-rewrite-and-arr-for-iis/