小编Ric*_*k77的帖子

从http重定向到https - 无限循环

我正在处理托管在Tomcat服务器上的Java Web应用程序.我必须设置从www到非www和从http到https的重定向.我想要以下三个网址:

重定向到

为此,我使用UrlRewriteFiltertuckey.org的4.0.3版.这是我的urlrewrite.xml档案:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
<urlrewrite> 
  <rule> 
    <name>Redirect www to non-www and http to https</name> 
    <condition type="request-url" operator="equal">(^http://example.com|^http://www.example.com|^https://www.example.com)</condition> 
    <from>^(.*)$</from> 
    <to type="permanent-redirect" last="true">https://example.com$1</to> 
  </rule> 
</urlrewrite> 
Run Code Online (Sandbox Code Playgroud)

重定向工作但网站没有加载,浏览器显示消息:

这个页面不起作用
example.com重定向了你太多次了.

我使用了重定向检查器,发现在初次重定向到https://example.com/之后,另一个重定向到https://example.com/,然后是另一个,依此类推 - 该URL重定向到自身.我不明白是什么产生了这种无限循环.任何帮助,将不胜感激!

更新:我还没有解决方案.如果我从条件元素中删除第一个URL,则其他两个重定向工作正常,但问题是如何从http://example.com设置重定向.

我尝试了另一种方法 - 通过粘贴以下代码在web.xml文件中设置重定向到https:

<security-constraint> 
  <web-resource-collection> 
    <web-resource-name>all</web-resource-name> 
    <url-pattern>/*</url-pattern> 
  </web-resource-collection> 
  <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
  </user-data-constraint> 
</security-constraint> 
Run Code Online (Sandbox Code Playgroud)

结果是相同的 - https://example.com在无限循环中重定向到自身.在这种情况下唯一的区别是重定向是状态代码302.任何关于导致此问题的原因以及如何解决它的想法?

更新:这是使用时curl命令的输出UrlRewriteFilter:


运行结果: curl http://example.com

响应标题

HTTP/1.1 301 Moved …
Run Code Online (Sandbox Code Playgroud)

java ssl https tuckey-urlrewrite-filter url-redirection

6
推荐指数
1
解决办法
903
查看次数

可排序的DBGrid

我想实现一个可排序的DBgrid(在单击列标题时对其行进行排序).我设法按升序排序,但我不能按降序排列.这是我的设计设置:

Query1.DatabaseName:='Test';
DataSetProvider1.DataSet:=Query1;
ClientDataSet1.ProviderName:=DataSetProvider1;
DataSource1.DataSet:=ClientDataSet1;
DBGrid1.DatSource:=DataSource1;
Run Code Online (Sandbox Code Playgroud)

以下是我的代码片段:

procedure TForm2.FormShow(Sender: TObject);
begin
  Query1.Open;
  ClientDataSet1.Data:=DataSetProvider1.Data;
  ClientDataSet1.AddIndex('objnameDESC','objname',[ixDescending]);
  ClientDataSet1.AddIndex('SUM(cd.worktime)DESC','SUM(cd.worktime)',[ixDescending]);
end;

procedure TForm2.DBGrid1TitleClick(Column: TColumn);
begin
  case Column.Index of
  0: if ClientDataSet1.IndexFieldNames='objname' then
       ClientDataSet1.IndexFieldNames:='objnameDESC'
     else
       ClientDataSet1.IndexFieldNames:='objname';
  1: if ClientDataSet1.IndexFieldNames='SUM(cd.worktime)' then
       ClientDataSet1.IndexFieldNames:='SUM(cd.worktime)DESC'
     else
       ClientDataSet1.IndexFieldNames:='SUM(cd.worktime)';
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我第一次点击列标题时,排序按升序完成 - 所以到此为止一切正常.当我第二次点击时,我希望按降序排序,但我收到消息:

Project ... raised Exception class EDatabaseError with message
'ClientDataSet1: Field 'objnameDESC' not found'.
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?

delphi

3
推荐指数
1
解决办法
7035
查看次数

使用TBookmark对象添加和减少

我的问题是如何使用TBookmark对象进行加法和减法等操作.例如,假设我想在dbgrid中高出4行:

MyPoint:=Query1.GetBookmark;
...
//MyPoint:=MyPoint-4;
Query1.GotoBookmark(MyPoint);
Run Code Online (Sandbox Code Playgroud)

这里的注释行是错误的.它生成"不适用于此操作数类型的运算符"消息.问题是我应该用什么来代替注释行.提前致谢!

delphi delphi-5

0
推荐指数
1
解决办法
210
查看次数