如何从IIS重写模块获得JavaScript(或其他)重写的URL
How can I get rewritten URL in JavaScript (or otherwise) from IIS Rewrite module?
我正在为单页应用程序编写HTML页面,并希望将其发布到我当前的ASP主机上,所以我使用IIS URL重写模块向/index.HTML发送大量请求
<rule name="Section">
<match url="sections/(.*)" />
<action type="Rewrite" url="index.html?section={R:1}" logRewrittenUrl="true" />
</rule>
我想做的是用JavaScript获得重写的查询字符串,尽管这似乎是不可能的。在静态html页面中有没有方法可以获得重写的查询字符串?window.location.href是原始url,而不是重写后的url。
最简单的方法是将重写后的URL作为响应体的一部分进行转储:
<input type="hidden" id="__rewritten_url" value="<%=Request.ServerVariables("URL")%>" />
或者,您可以将重写后的URL附加为Response Header
,然后发出Ajax
请求并从中提取该标头。因此,您的web.config
看起来像:
<system.webServer>
<rewrite>
<rules>
<rule name="Section">
<match url="sections/(.*)" />
<action type="Rewrite" url="index.html?section={R:1}" logRewrittenUrl="true" />
</rule>
</rules>
<outboundRules>
<rule name="AppendRewrittenResponseHeader" patternSyntax="Wildcard">
<match serverVariable="RESPONSE_URL" pattern="*" />
<action type="Rewrite" value="{URL}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
然后在客户端(为了简洁起见,使用jQuery
):
$.ajax({
type: "HEAD",
url: location.href,
success: function(message,text,response)
{
var myRewrittenUrl = response.getResponseHeader('URL');
}
});
相关文章:
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 除修剪外的其他功能
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Array.length似乎不起作用;console.log则显示其他情况
- 如何消除代码中的未定义和其他问题
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- Chrome 扩展程序会更新并重写为其他相同的扩展程序
- 如何使用 javascript 或其他代码将 html 代码调出到其他页面,而不是重写长代码
- Javascript关联数组:推送一个对象会重写其他数组元素
- 即时角度服务-我还有什么其他方式可以重写它
- 从其他类继承原型方法,而不重写自己的原型方法
- Javascript'这'在Z组合子和其他递归函数中重写
- 如何从IIS重写模块获得JavaScript(或其他)重写的URL
- 意外的其他令牌:重写
- Javascript小于重写其他小于条件
- 加载具有与其他脚本相同的变量的脚本并重写