URL重写后更改Javascript内容类型

时间:2017-06-28 17:49:26

标签: javascript asp.net iis reverse-proxy arr

我正在尝试使用ARR和URL重写进行反向代理以实现以下重定向:

显示的最终网址与源网址相同。

重定向工作正常,但在外部浏览时,我的所有JavaScript文件都转换为content-type text/html而不是application/javascript。这导致空白页而不是实际功能。

重写规则:

<rules>
...
  <rule name="ReverseProxyInboundRule2" stopProcessing="true">
    <match url="^test(.*)" />
    <action type="Rewrite" url="http://{HTTP_HOST}:83/{R:1}" />
  </rule>
</rules>
<outboundRules>
  <rule name="ReverseProxyOutboundRule1" preCondition="IsJavascript">
    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" customTags="" pattern="^http(s)?://localhost:83/(.*)" />
    <action type="Rewrite" value="http{R:1}:{HTTP_HOST}/{R:2}" />
  </rule>
  <preConditions>
    <preCondition name="IsJavascript">
      <add input="{RESPONSE_CONTENT_TYPE}" pattern="^application/javascript" />
    </preCondition>
  </preConditions>      
</outboundRules>

目标页面使用AJAX功能,因为js文件已被随机html标记损坏,导致AJAX函数失败。我怎么能纠正这个?

1 个答案:

答案 0 :(得分:1)

最后认为问题是由于目标应用程序中的相对路径。代理完成后,js,css和其他链接将重定向到自定义404错误页面,该页面是源应用程序的一部分。我通过修改代码修复了这个问题。