标签: coldfusion-11

ColdFusion 11 - 500非ASCII Cookie字符的内部服务器错误

为了响应任何包含非ASCII字符的cookie的请求,ColdFusion 11似乎崩溃了.IIS 8.5返回HTTP 500内部服务器错误(空白页).

重现步骤:

  1. 在Javascript控制台中运行以下命令并尝试加载任何CFML页面: document.cookie="a=ñ";

  2. (可选)请求任何.html或.txt文件并接收正常响应.

  3. 请求任何ColdFusion页面并收到空白页,HTTP 500内部服务器错误.

  4. 唯一的解决方法是清除浏览器cookie.

环境:

  • Windows Server 2012 R2标准版
  • IIS 8.5
  • 冷融合11(标准)
  • 所有操作系统和软件都运行最新的修补版本.

我已经尝试添加-Dfile.encoding=UTF-8Java参数.

我没有在ColdFusion上找到其他人遇到这个问题.在Tomcat上运行Java代码存在类似的问题.但是,由于ColdFusion 11与Tomcat捆绑在一起,我甚至不知道Tomcat的运行版本以及如何升级它.(看起来ColdFusion 10运行Tomcat 7)Adobe似乎没有关于ColdFusion 11的Tomcat层的文档(特别是它与ColdFusion的关系).我已尝试将<CookieProcessor />配置应用于context.xml,如其他帖子所示.我已发布到Adobe bug基础并且未收到任何响应.

欢迎任何想法.不幸的是,我们在cookie中有很多用户使用"Español",我们无法执行任何ColdFusion代码来清除或更改它.我们在ColdFusion 9中没有遇到这个问题,并且在升级到ColdFusion 11之后在QA检查中错过了这个问题.

coldfusion-error.log完全例外:

Sep 03, 2015 11:43:58 PM org.apache.coyote.ajp.AjpProcessor process
SEVERE: Error processing request
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
    at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193)
    at org.apache.tomcat.util.http.Cookies.getTokenEndPosition(Cookies.java:502)
    at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:349)
    at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:168)
    at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:106)
    at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:986)
    at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:743)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:417)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at …
Run Code Online (Sandbox Code Playgroud)

cookies coldfusion tomcat jwplayer coldfusion-11

9
推荐指数
1
解决办法
799
查看次数

如何为ColdFusion/Tomcat禁用localhost_access_log文件

我在Web服务器上的磁盘空间不足.由于日志存储在另一个驱动器上,并且网站没有任何新文件,因此必须进行其他操作.

我发现ColdFusion 10附带的Tomcat服务是在这个文件夹{ColdFusion Root}\cfusion\runtime\logs中为每个网页请求编写日志文件.他们占了8GB的磁盘空间!

文件名采用以下格式:localhost_access_log.YYYY-MM-DD.txt

如果您在ColdFusion服务器上运行单个站点,则可能没问题.日志文件的问题是它们只显示请求的SCRIPT_NAME和QUERY_STRING.您将无法确定"/index.cfm"请求适用于哪个站点.也许它可以配置为包含站点主机名.

我宁愿禁用此日志记录,因为IIS日志记录更具信息性.

tomcat coldfusion-10 coldfusion-11

8
推荐指数
1
解决办法
5708
查看次数

增加"最大输出缓冲区大小"有什么风险

我正在处理从ColdFusion 9到ColdFusion 11的迁移.我遇到的一个问题与此问题中详述的问题基本相同:cf10无法向HTML Head添加文本

在我的情况下,根本原因是一个特定的页面,其重量约为3 MB,大于输出缓冲区(默认为1024 KB),并导致CF刷新缓存.这反过来打破了对cfhtmlheadin 的呼叫OnRequestEnd().

重新设计页面现在不是一个实用的解决方案.(也许将来.)我的问题是通过将"最大输出缓冲区大小"增加到4096 KB来"解决".

增加这个价值有哪些风险?此服务器上还有其他应用程序/站点.可能有记忆问题吗?性能下降?(试图找到这方面的参考令人沮丧.)

ColdFusion的11锁定指南说:

较低的输出缓冲区大小可能会减少某些应用程序中的内存占用.

服务器和JVM似乎有足够的内存.


由于对于哪种设置似乎存在一些混淆:

设置屏幕截图

coldfusion output-buffering coldfusion-11

8
推荐指数
1
解决办法
2732
查看次数

dateDiff返回错误的值

我有一个名为变量的变量date1,它包含使用生成的ColdFusion日期/时间对象parseDateTime.当我转储变量时,我得到了{ts '2014-12-20 15:46:57'}.

我有另一个变量date2,它包含另一个生成的ColdFusion日期/时间对象dateConvert("local2utc",now()).当我转储变量时,我得到了{ts '2014-12-20 15:49:40'}.

但是,当我这样做时,dateDiff("s",date1,date2)我得到-21436,这是太多秒.任何人都可以解释为什么会这样吗?我认为这可能是一个时区问题,但我无法理解它.

Repro代码

<cfset dtString = "Saturday, December 20, 2014 05:07:30 PM">

<cfset dtObject = parseDateTime(dtString)>

<cfdump var="#dtObject#">

<cfset utcNow = dateConvert("local2utc",now())>

<br><br><cfdump var="#utcNow#">

<br><br><cfdump var="#dateDiff("s",dtObject,utcNow)#">
Run Code Online (Sandbox Code Playgroud)

coldfusion coldfusion-11

7
推荐指数
1
解决办法
488
查看次数

在Coldfusion中加密,然后在PHP中解密

我有一个问题,复制PHP和Coldfusion生成的相同结果.

在PHP加密这种方式:

<?php
    $key = "$224455@";
    $Valor = "TESTE";

    $base = chop(base64_encode(mcrypt_encrypt(MCRYPT_DES, $key, $Valor, MCRYPT_MODE_ECB)));     
?>
Run Code Online (Sandbox Code Playgroud)

我有结果:

TzwRx5Bxoa0 =

在Coldfusion这样做:

<cfset Valor = "TESTE">
<cfset Key = "$224455@">
<cfset base = Encrypt(Valor,ToBase64(Key),"DES/ECB/PKCS5Padding","BASE64")>
Run Code Online (Sandbox Code Playgroud)

结果:

qOQnhdxiIKs =

什么不是ColdFusion产生与PHP相同的价值?

非常感谢你

php encryption coldfusion coldfusion-11

7
推荐指数
2
解决办法
982
查看次数

使用ColdFusion 10/11在IIS 8/8.5上出现错误500

如果我的ColdFusion脚本中有错误,我从IIS而不是ColdFusion收到500错误消息.只有当我在URL中提供文件名时才会发生这种情况,如果我打开没有脚本名称的URL(这将打开index.cfm),则不会发生这种情况.

例如:

我可以在我的3个ColdFusion平台中的2个重现此问题:

  • 正常工作:带有ColdFusion 10 Update 12的IIS 7.5(带有更新的连接器)
  • 工作:带有ColdFusion 10 Update 12的IIS 8(带有更新的连接器)
  • 工作:带有ColdFusion 11的IIS 8.5

我的index.cfm和foobar.cfm:

<!--- provoke a coldfusion error --->
<cfset foo
Run Code Online (Sandbox Code Playgroud)

我的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom" existingResponse="PassThrough" />
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

对我来说,看起来与IIS 8和IIS 8.5的ColdFusion连接器有问题.

coldfusion coldfusion-10 iis-8 coldfusion-11 iis-8.5

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

ColdFusion 11 cfflush标签无法正常工作?

任何人在ColdFusion 11中遇到cfflush标签问题?我们有一个例程,它在处理循环时更新实时记录计数.在ColdFusion 10中,这很好用.在ColdFusion 11中,它会一直等到循环结束才能更新屏幕.不是我们所期望的.

编辑按要求添加代码...

<script language="javascript">
    addOutputLine('<br /><span id="insertCount">Records Inserted: 0</span>')
</script>
<cfset insertCount = 0>
<cfset updateCountAfter = 1>
<cfif qry.recordcount gt 5000>
    <cfset updateCountAfter = 10>
</cfif>

<cfoutput query="qry" startrow="#DATASTART#">
    <!---do some stuff here that is not important to this issue--->

    <cfset insertCount = insertCount + 1>
    <cfif updateCountAfter gt 1>
        <cfif insertCount mod updateCountAfter eq 0>
            <script language="javascript">document.getElementById('insertCount').innerHTML = 'Records Inserted: #insertCount#';</script>    
        </cfif> 
    <cfelse>
         <script language="javascript">document.getElementById('insertCount').innerHTML = 'Records Inserted: #insertCount#';</script>
    </cfif>

    <cfflush>

</cfoutput>
Run Code Online (Sandbox Code Playgroud)

coldfusion coldfusion-11

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

ColdFusion:具有多个外键的ORM集合

我的数据库结构主要由每个表的多个主键组成,因此每个连接需要多个列.我正在尝试使用ColdFusion(11具体)ORM集合属性.似乎该fkColumn属性中以逗号分隔的列列表不起作用,就像它对关系属性一样.我已经向Adobe提交了一个错误,但我想知道是否有其他人遇到过此问题并找到了解决方法.或者也许我只是做错了..

表设置

Years        Staff         StaffSites    Sites
===========  ============  ============  ===========
YearID (PK)  StaffID (PK)  YearID (PK)   SiteID (PK)
YearName     StaffName     StaffID (PK)  SiteName
                           SiteID (PK)
Run Code Online (Sandbox Code Playgroud)

工作人员ORM CFC

component persistent=true table='Staff' {
    property name='id'    column='StaffID'       fieldType='id';
    property name='year'  column='YearID'        fieldType='id';
    property name='sites' elementColumn='SiteID' fieldType='collection' table='StaffSites' fkColumn='StaffID,YearID';
}
Run Code Online (Sandbox Code Playgroud)

问题

运行生成的查询时出错: [Macromedia][SQLServer JDBC Driver][SQLServer]An expression of non-boolean type specified in a context where a condition is expected, near ','.

看一下生成的查询,似乎没有为where子句正确解析列的列表,但它有点理解select表达式中有多个列.

select …
Run Code Online (Sandbox Code Playgroud)

collections coldfusion orm coldfusion-11

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

WCF和ColdFusion

我有一个WCF WebService我想使用ColdFusion消费.常规过程是使用CFHTTP在WSDL中使用SOAP请求.通常,这是有效的,一切正常.

<cfsavecontent variable="xmlBody" >
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
   <soap:Header/>
   <soap:Body>
      <tem:GetVersion/>
   </soap:Body>
</soap:Envelope>
</cfsavecontent>
Run Code Online (Sandbox Code Playgroud)
<cfhttp url="https://www.example.com/OtherService.svc?wsdl" method="post" timeout="1200" username="myUsername" password="myPassword" >
    <cfhttpparam type="header" name="Content-Type" value="application/soap+xml;charset=UTF-8">
    <cfhttpparam type="header" name="Content-Length" value="#len(trim(xmlbody))#">
    <cfhttpparam type="header" name="soapAction" value="http://tempuri.org/GetVersion">
    <cfhttpparam type="body" name="body" value="#trim(xmlBody)#">
</cfhttp>
<cfdump var="#cfhttp#">
Run Code Online (Sandbox Code Playgroud)

运行页面后,我得到了The security context token is expired or is not valid. The message was not processed.回复.在阅读服务提供商提供的文档时,似乎我不能只将XML发布到URL并将其称为一天: While WCF uses XML to post communications to the endpoint, it is required that users use Visual Studio's "Add Service Reference" or svcutil.exe …

.net coldfusion wcf web-services coldfusion-11

6
推荐指数
0
解决办法
388
查看次数

cfSpreadsheet两位数年份

在ColdFusion 11中,我使用cfSpreadsheet将.xls文件转换为查询对象.以下是我的演示电子表格的屏幕截图:

电子表格的屏幕截图

我使用此代码在创建后立即查看查询对象:

<cfspreadsheet action="read" src="demo_spreadsheet.xls" 
       excludeHeaderRow="true" 
       headerrow="1" query="demo_query"/>
<cfdump var="#demo_query#">
Run Code Online (Sandbox Code Playgroud)

......我得到了这些结果:

png显示查询对象的转储

请注意,我在电子表格中的所有4位数年份现在都是2位数年份?当我使用以下代码输出查询对象中的数据时:

<ul>
<cfoutput query="demo_query">
    <li>#name# - #dateformat(start_date, 'medium')#</li>
</cfoutput>
</ul>
Run Code Online (Sandbox Code Playgroud)

...我得到以下输出(好吧,我是新来的,所以我不能发布超过两个屏幕截图,所以你必须相信我这个复制/粘贴):

  • 阿尔法 - 2007年1月1日
  • 布拉沃 - 1972年2月2日
  • 查理 - 2017年3月3日
  • 达美 - 1984年4月4日
  • 回声 - 2029年12月31日
  • Foxtrot - 1930年1月1日
  • 高尔夫 - 1930年1月1日

1907年现在是2007年,1917年现在是2017年,1929年现在是2029年,2030年现在是1930年.似乎在1930年1月1日之前的任何日期的年份被读作20xx,并且在12月31日之后,2029年被读作19xx年.

我错过了什么吗?我以为我们用Y2K想出了这种事情.在某处我有不正确的简单设置吗?我已经用Google搜索了这个问题,我找不到任何相关信息.

任何建议都是最受欢迎的.

coldfusion excel cfspreadsheet coldfusion-11

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