【问题标题】:request.isSecure() returns true when connection is http当连接为 http 时 request.isSecure() 返回 true
【发布时间】:2012-09-14 18:09:44
【问题描述】:

我正在尝试检查我的网址是否为 http/https,然后根据第一个下拉列表中选择的值进行 AJAX 调用以填充多个下拉列表。

var baseurl="<%=request.isSecure()%>";

if (baseurl=='true') {
    var url = 
        "https://<%=request.getServerName()%><%=request.getContextPath()%>/JsonLookup?z=" + zone;    
}
// if the protocol is 'http' 
else 
{   
    alert("inside protocol else");
    var url = "http://<%=request.getServerName()%><%=request.getContextPath()%>/JsonLookup?z=" + zone;  
    alert("inside http:"+url);
}

当协议是 http 时我有问题,下拉列表没有改变。原因是,基本 url (isSecure()) 总是返回 true,即使它是 http。

谁能帮我解决这个问题,我应该怎么做才能让 request.isSecure() 为 http 返回 false?

【问题讨论】:

  • 除此之外,我在 IE8 上检查了这个,我看到权限被拒绝错误.. 这是错误详细信息 - 网页错误详细信息用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1 ;三叉戟/4.0;BTRS125042;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30;.NET CLR 3.0.04506.648;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.. NET4.0C;BOIE8;ENUSMSCOM)时间戳:2012 年 9 月 14 日星期五 16:32:39 UTC 消息:权限被拒绝行:544 字符:2 代码:0 URI:myurl.com

标签: java ajax http jsp https


【解决方案1】:

你不能使用没有主机名的引用吗?

/path/to/resource

而不是

http://myserver.com/path/to/resource

编辑:

您的示例如下所示:

var url = "/<%=request.getContextPath()%>/JsonLookup?z=" + zone;
alert("My root relative URL: "+url); }

【讨论】:

  • 我正在从变量中获取服务器名称和路径。在构建 url 时,我分别对 http 和 https 进行硬编码。你认为我应该如何在不指定主机名的情况下构建 url?
  • 顺便说一句,当在第一个下拉列表中选择一个值时,我使用 AJAX 填充下拉列表。对于 http,由于 isSecure() 仍然返回 true,mylink 的 AJAX 不起作用。我仍在寻找解决我的问题的方法。有人可以帮忙吗?
  • 但是省略httphttps 部分也不是问题。没有必要使用它们。我会用一个例子来扩展我的答案。
  • Ivan,我按照你的建议使用了相对路径。但在这种情况下,AJAx 调用不适用于 http/https。在选择下拉值时,我正在调用 AJAX 函数,在该函数中检查是否为 http/https,然后在主下拉列表下方填充后续下拉列表。
  • 但在这种情况下,AJAx 调用不适用于 http/https。 你是什么意思?您是否需要根据是http 还是https 返回不同的结果集?如果不是,那么您绝对不需要检查用于进行呼叫的协议。只需删除您拥有的所有支票即可。
猜你喜欢
  • 2021-07-02
  • 2011-05-22
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2016-03-29
相关资源
最近更新 更多