You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JQgrid 4.3.1在HTTPS站点发起HTTP请求致混合内容错误,如何强制用HTTPS?

解决JQgrid 4.3.1在HTTPS环境下发起HTTP请求的混合内容问题

针对你遇到的JQgrid编辑请求强制使用HTTP导致的混合内容错误,提供以下几种可行方案:

方案一:后端生成HTTPS绝对URL(推荐)

直接在editUrl配置中生成带HTTPS协议的绝对路径,替换原来的相对路径生成方式。修改HTML中data属性里的editUrl值:

editUrl:"@Url.Action("BusinessChannelEdit", null, "https", Request.Host.Value)"

这个重载的Url.Action方法会直接生成以HTTPS开头的完整请求地址,从根源确保JQgrid发起的请求使用HTTPS协议。

方案二:前端动态修改JQgrid的editUrl配置

如果无法修改后端代码,可以在页面加载完成后,手动修改JQgrid的editUrl参数,强制替换为HTTPS协议:

$(function() {
    // 获取当前站点的HTTPS基础地址
    var baseHttpsUrl = window.location.protocol + "//" + window.location.host;
    // 拼接完整的HTTPS请求地址
    var httpsEditUrl = baseHttpsUrl + '@Url.Action("BusinessChannelEdit")';
    // 修改JQgrid的editUrl配置
    $("#businessGrid").jqGrid('setGridParam', { editUrl: httpsEditUrl });
});

这段代码会自动获取当前站点的HTTPS域名,拼接出正确的编辑接口地址,覆盖JQgrid原有的editUrl配置。

方案三:全局强制HTTPS(补充方案)

如果希望全站所有请求都使用HTTPS,可以在后端配置强制跳转:

  • 在ASP.NET控制器的BusinessChannelEdit方法上添加[RequireHttps]特性,强制该接口仅接受HTTPS请求;
  • 在web.config中配置URL重写规则,将所有HTTP请求重定向到HTTPS:
<system.webServer>
  <rewrite>
    <rules>
      <rule name="HTTP to HTTPS redirect" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="off" ignoreCase="true" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

内容的提问来源于stack exchange,提问作者user3703570

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:07:33