【问题标题】:Using actionscript Xml.send() to coldfusion 7 stopped working after flash player update在 Flash 播放器更新后,使用 actionscript Xml.send() 到 Coldfusion 7 停止工作
【发布时间】:2014-11-21 20:33:03
【问题描述】:

我有一个使用 Flash 8 和 actionscript 2.0 构建的网站。这连接到coldfusion 7服务器,为用户打印报告等内容。这已经工作了很多年,但是自从Flash Player更新以来,自15+版本以来,此打印已停止工作,现在我得到以下信息错误

500

java.lang.IllegalArgumentException 在 Coldfusion.filter.FormScope.parseQueryString(FormScope.java:283) 在 Coldfusion.filter.FormScope.parsePostData(FormScope.java:255) 在 Coldfusion.filter.FormScope.fillForm(FormScope.java:206) 在 Coldfusion.filter.FusionContext.SymTab_initForRequest(FusionContext.java:384) 在coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:33) 在 Coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) 在 Coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:115) 在coldfusion.CfmServlet.service(CfmServlet.java:107) 在 Coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:78) 在 jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91) 在 jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 在 jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:259) 在 jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 在 jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 在 jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) 在 jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

我已经尝试了解决方案 Handling 500 JRun servlet in ColdFusion。这停止了​​屏幕上显示的错误,但我什么也没显示

以下代码是我调用coldfusion页面的方式

    var xmlString:String = "<rootNode>";
    // More xml
    xmlString += "</rootNode>";
    var xmlObj = new XML(xmlString);
    xmlObj.contentType = "text/xml";
    xmlObj.send( "https://domainname.com/printme.cfm", "_blank");

从测试中我注意到,如果我将 xmlString 设为空字符串,则上述错误将停止,但只要是任何文本,上述错误就会再次出现

有没有人有任何想法, 谢谢

编辑 这里要求的是来自 ServiceCapture 的标头

第一个来自 FireFox,使用 flash player 15.0.0.233 并给出 500 错误。 第二个来自 IE,使用 flash player 10.2.153.1 并正确打印。 两者都访问同一个网站

我从 ServiceCapture 注意到的一件事是,当它工作时,xml 文本会列在请求端的“文本”选项卡中。当它不起作用时,xml 会显示在“参数”选项卡中

POST /printme.cfm HTTP/1.1
Host: domainname.com
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: CFID=8989; CFTOKEN=556456456456; JSESSIONID=4544545f93bea93a591513
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 2100



POST /printme.cfm HTTP/1.1
Accept: */*
Content-Type: text/xml
Accept-Language: en-gb
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: domainname.com
Content-Length: 2100
Cookie: CFID=23232; CFTOKEN=656565656; JSESSIONID=583078632234aa20506970

编辑 2; 我注意到在第一个 POST 块中,内容类型设置为“application/x-www-form-urlencoded” 这是默认设置。由于某种原因,较新版本的 Flash 播放器接缝忽略了这一行

xmlObj.contentType = "text/xml";

另外,如果我删除此行,我会收到两个版本的播放器的 500 错误

【问题讨论】:

  • 您需要发布 CF 代码。 500 错误是通用的,并且会掩盖实际错误。尝试在 application.log 中查找它。
  • 感谢您的回复,我最初并没有发布 CF 代码,因为我上面提到的胎面说这个错误是由 jrun 引起的,甚至在 CF 被调用之前。即使是简单的 hello world 也会产生同样的结果
  • 嗯...好吧,这个怎么样。首先,使用 firebug 或 wireshark 发布 RAW http 数据——XML 数据包和 http post headers。然后,在 CF 端查看标准 Java 输出日志的 /runtime/logs - 有时标题为“cfusion-out.log”。该日志包含 CF 日志中未找到的信息。也许会出现一个线索。
  • cfusion-out.log 在 javax.servlet 的 javax.servlet.http.HttpUtils.parseQueryString(HttpUtils.java:149) 解析 POST 数据 java.lang.IllegalArgumentException 时也出现此“警告错误”。 http.HttpUtils.parsePostData(HttpUtils.java:252) 在 jrun.servlet.JRunRequest.parsePostData(JRunRequest.java:381) 在 jrun.servlet.JRunRequest.getParameters(JRunRequest.java:361) '...
  • 这是一个很好的线索!让我们看看您发布的 RAW xml 是什么。

标签: coldfusion actionscript flash


【解决方案1】:

原来 contentType "text/xml" 已被弃用,新版本的 flash player 必须更严格地设置它为有效值并将我的值更新为默认值。 一旦我将其更改为“text/plain”,一切都开始工作了

【讨论】:

  • 乔克,太棒了。我很高兴这很容易解决,嗯?
  • 感谢您的帮助,就像大多数事情一样,这是一个简单的修复......当您知道如何修复它时:D。令人担忧的是,我们的用户可以使用该系统的唯一方法是安装旧版本的 FP,然后关闭自动更新,这不是最佳解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 2011-02-04
相关资源
最近更新 更多