【发布时间】:2012-12-06 21:12:09
【问题描述】:
我在带有 Java 1.7 的 Mac OS X 10.8 上的带有 Jetty 8 的 Railo 4.0.2.002 Express 中运行旧版 CF Fusebox 5.5 应用程序。 我也在使用码头 urlrewrite http://tuckey.org/urlrewrite/(如果相关)
为什么在提交表单时FORM 范围总是空白?但如果我使用URL 范围,它就可以正常工作。
该应用在所有其他版本的 CF 中都可以正常运行,在这里也应该可以正常运行。
更新 1:
此外,当我在Application.cfc 内执行onRequestStart 并转储FORM 范围时,它也在那里是空的。
有人遇到过这个问题吗?我认为它不一定是“保险丝盒”,所以我想知道这是否是 Railo 4 兼容性问题?
更新 2:
当表单发布到 /admin/index.cfm?event=Main.Login
表单范围工作正常。但是当它发布到 /admin/event/Main.Login 时,表单范围就消失了。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
"http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<urlrewrite>
<rule>
<from>^/admin/event/(.*)</from>
<to last="false">/admin/index.cfm?event=$1</to>
</rule>
<rule>
<from>^/lms/event/(.*)</from>
<to last="false">/lms/index.cfm?event=$1</to>
</rule>
</urlrewrite>
更新 3:
还应该注意的是,Charles(代理)正在正确检测“POST”请求,其中包含正确发送到服务器的电子邮件/密码和其他表单元素。
Jetty 服务器根本看不到它们,或者没有正确地将它们转发到 Railo 引擎或其他什么?
更新 4:
这是他们告诉您放置在web.xml 中的 tukey 配置。我实际上将它放在 Railo Express 的 etc/ 目录中的 webdefault.xml 中,我猜这可能只是 Jetty 文件。
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
【问题讨论】:
-
你能告诉我们一些不工作的代码吗? What have you tried?
-
我想我刚刚回答过了...我相信这是我的 URLrewrite 规则...
-
它们确实很棘手。如果您确实发现它是您的 URL 重写规则,请将之前和之后作为您的答案发布,以便其他人可以从解决方案中受益。
-
我从来没有用过Tuckey,但是如果它是做301或302重定向,那么它确实会失去FORM范围。如果您观察请求的 HTTP 流量(使用 Fiddler (fiddler2.com/fiddler2) 或 Charles (charlesproxy.com)),您会看到重定向发生吗?
-
Tukey 是一个 servlet 过滤器(插入到 Tomcat 中),它重写 URL(不是 HTTP 重定向)——除非您使用
type="redirect"属性指示它,否则它不会执行 301/302。跨度>
标签: forms jetty railo tuckey-urlrewrite-filter cfml