【发布时间】:2014-07-02 11:42:04
【问题描述】:
我正在尝试将 aspx 中的 http 调用转换为 https
背景:我在 https 站点中有一个 Aspx 页面。在该页面上我参考了谷歌的脚本
Aspx 页面参考:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
我已经为 Prefix Http 创建了一个 HttpHandler IHttpHandler 接口实现:
public class HttpToHttpsHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
try
{
context.Response.ContentType = "text/plain";
if (context.Request.RawUrl.Contains("http:"))
{
string newUrl = context.Request.RawUrl.Replace("http", "https");
context.Server.Transfer(newUrl);
}
}
catch (Exception)
{
throw;
}
}
}
Web.Config文件注册码:
<httpHandlers>
<add verb="*" path="http:*" type="HttpToHttpsHandler , App_Code"/>
</httpHandlers>
但我没有在 Http 处理程序类中获得控制权。可能是什么错误。
【问题讨论】:
-
每当我创建一个处理程序时,我都会在主 Web 目录之外创建一个名为 handlers 的文件夹,并创建一个“通用”处理程序 (.ashx)。我从 js 调用处理程序,“/handlers/nameOfHandler.ashx?arg1=121212”...
-
是否要将页面上
<script>标签中的URL设置为HTTPS?因为如果是这样,使用 HttpHandler 不会这样做,因为没有浏览器会从您的服务器请求该脚本。根据父页面自动强制脚本解析为 http 或 https 的最简单方法是将src设置为src=//the.url.com。浏览器会根据页面加载的内容自动在//之前插入http:或https:。这适用于所有类型的绝对 url、href、img src 等。 -
我同意@siva.k ...您不需要(或想要)处理程序为您执行此操作。只需按照描述使用 // 引用您的脚本,您将获得所需的行为。