Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTTP请求返回200 OK,但响应中没有内容_Javascript_Http_Jboss_Atmosphere - Fatal编程技术网

Javascript HTTP请求返回200 OK,但响应中没有内容

Javascript HTTP请求返回200 OK,但响应中没有内容,javascript,http,jboss,atmosphere,Javascript,Http,Jboss,Atmosphere,在开发一个特定的网站时,我在Firefox中加载该网站时遇到了间歇性问题(无法在IE或Chrome中进行比较)。该站点加载多个javascript文件、css样式表、图像等。有时,一个或多个文件无法正确加载。响应指示状态为200 OK,但内容长度指示0。这种情况在不同的时间发生在不同的文件上。当javascript文件加载失败时,站点无法正常运行,但仍可能显示内容。当index.html文件加载失败时,Firefox会显示一个空页面,其中包含以下html: <html> <he

在开发一个特定的网站时,我在Firefox中加载该网站时遇到了间歇性问题(无法在IE或Chrome中进行比较)。该站点加载多个javascript文件、css样式表、图像等。有时,一个或多个文件无法正确加载。响应指示状态为200 OK,但内容长度指示0。这种情况在不同的时间发生在不同的文件上。当javascript文件加载失败时,站点无法正常运行,但仍可能显示内容。当index.html文件加载失败时,Firefox会显示一个空页面,其中包含以下html:

<html>
<head></head>
<body><pre></pre></body>
</html>
来自缓存的响应头:

Firebug中的“缓存”选项卡指示以下内容:


失败案例:(响应状态:200 OK,内容长度:0)

请求标头:

Firebug中的“缓存”选项卡指示以下内容:


下一个成功案例:(响应状态:200 OK,内容长度:288)

请求标头:

Firebug中的“缓存”选项卡指示以下内容:

我们在JBoss EAP v6.1中托管了该站点,我在Firefox 10、17和24中尝试过,结果相同。我知道有更新的版本可用(更不用说不同的浏览器),但它们不一定是我们的选择。我希望解决方案是一个简单的配置更改,但在我尝试搜索这个问题时,我没有看到任何人有相同的问题,因此它可能不是那么简单。我感谢你的建议。另外,如果我需要提供更多信息(例如web.xml、jboss.conf等),请告诉我

组合中的其他产品:

  • Require.js v2.1.2
  • Java 1.6
  • CAS 3.2.1
  • 大气2.1.3

更新:我基本上排除了缓存问题的可能性。我实现了页面中建议的缓存破坏模块加载过程,但我仍然看到了问题。然而,这一次,不是所有的304状态代码,而是所有的200状态代码


更新2:我下载了JBossWeb 7.2.0.Final的源代码,并调试了这个问题。显然,有一个名为org.apache.coyote.http11.Http11ConnectionHandler的类,它维护一个Http11Processor实例池,每个实例都有自己的请求和响应对象。当请求完成时,http11处理器被“回收”并放回池中

看来回收逻辑中可能存在线程问题,因为Response.recycle应该将“committed”设置为false,但在调用Response.recycle()后,我的(条件)断点立即停止,Response.committed==true。这就是导致以后响应失败的原因。当http11处理器包含已提交的响应对象时,该响应不能用于返回任何信息。它只响应状态:200,内容长度:0


当我关闭一个使用服务器端事件的大气连接的网站时,这种情况似乎正在发生。我是否使用大气连接不当?是否有我应该实现的特殊清理逻辑?

您可能有一个try-catch块,它正在吞咽错误,并且不产生任何输出。它可能在某个地方记录了错误。

经过大量的调查和调试,我发现Atmosphere库被允许操作一个已回收的响应对象,并用于以后的请求。受影响的响应的状态为200,内容长度为0,并且已提交,因此无法进行其他修改。提供此“损坏”响应实例的不幸请求线程无法用于提供实际内容

为了防止此修改影响JBoss服务器,我在JBoss.properties文件中添加了以下内容:

另一种选择是使用安全管理器。 (参见第页的安全部分,以及第页最后几段中提供的建议)


这显然阻止了请求和响应的循环,因此我们总是为每个请求获得一个新的响应实例。

这绝对是一个合理的理论。我已经检查了任何异常,但没有找到任何异常。在我的调试(使用Eclipse)中,我添加了一个“捕获/未捕获异常时停止”,并且没有遇到任何异常。我一定会记住这一点,但我不认为这是根本原因。请参阅问题中的更新2。您好,我正在使用jboss eap 6.4、primefaces 5.3和atmosphere 2.4.8。我的问题与您完全相同,但在我将org.apache.catalina.connector.RECYCLE_FACADES属性添加到standalone.xml之后,我遇到了一个异常(拦截器大气生命周期崩溃。处理将继续使用其他拦截器。:java.lang.IllegalStateException:JBWEB000057:请求对象已被回收,不再与此外观关联)。您遇到过类似的问题吗?我看到过这个异常。我在AtmosphereSource实例清理方面做了很多其他工作,主要是因为我使用了BlockingIOComeSupport(仅限于缺少异步IO支持).在我们的应用程序中,有足够的大气资源循环,因此此异常不会引起任何重大问题(我们已经注意到)。
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en/q=0.5
Connection: keep-alive
Cookie: JSESSIONID=<shouldn't matter>
Host: ???.???.???.???:8442
If-Modified-Since: Tue, 29 Apr 2014 13:18:26 GMT
If-None-Match: W/"228-1398777506000"
Referrer: https://???.???.???.???:8442/mySite/
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131023 Firefox/17.0 
Cache-Control: no-cache
Date: Tue, 29 Apr 2014 13:36:35 GMT
Etag: W/"288-1398777506000"
Expires: Thu, 01 Jan 1970 00:00:00 GMT-00:00
Pragma: No-cache
Server: Apache-Coyote/1.1 
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 288
Content-Type: text/javascript
Date: Tue, 29 Apr 2014 13:36:35 GMT
Etag: W/"288-1398777506000"
Expires: Thu, 01 Jan 1970 00:00:00 GMT-00:00
Last-Modified: Tue, 29 Apr 2014 13:18:26 GMT
Pragma: No-cache
Server: Apache-Coyote/1.1 
Data Size: 288
Device: disk
Expires: Wed Dec 31 1969 18:00:00 GMT-06:00 (CST)
Fetch Count: 81
Last Fetched: Tue Apr 29 2014 08:28:35 GMT-05:00 (CDT)
Last Modified: Tue Apr 29 2014 08:28:35 GMT-05:00 (CDT) 
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en/q=0.5
Connection: keep-alive
Cookie: JSESSIONID=<same as above>
Host: ???.???.???.???:8442
If-Modified-Since: Tue, 29 Apr 2014 13:18:26 GMT
If-None-Match: W/"228-1398777506000"
Referrer: https://???.???.???.???:8442/mySite/
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131023 Firefox/17.0 
Content-Length: 0
Date: Tue, 29 Apr 2014 13:36:28 GMT
Server: Apache-Coyote/1.1 
Data Size: 
Device: disk
Expires: Wed Dec 31 1969 18:00:00 GMT-06:00 (CST)
Fetch Count: 83
Last Fetched: Tue Apr 29 2014 08:28:42 GMT-05:00 (CDT)
Last Modified: Tue Apr 29 2014 08:28:42 GMT-05:00 (CDT) 
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en/q=0.5
Connection: keep-alive
Cookie: JSESSIONID=<same as above>
Host: ???.???.???.???:8442
Referrer: https://???.???.???.???:8442/mySite/
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131023 Firefox/17.0 
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 288
Content-Type: text/javascript
Date: Tue, 29 Apr 2014 13:37:03 GMT
Etag: W/"288-1398777506000"
Expires: Thu, 01 Jan 1970 00:00:00 GMT-00:00
Last-Modified: Tue, 29 Apr 2014 13:18:26 GMT
Pragma: No-cache
Server: Apache-Coyote/1.1 
Data Size: 288
Device: disk
Expires: Wed Dec 31 1969 18:00:00 GMT-06:00 (CST)
Fetch Count: 85
Last Fetched: Tue Apr 29 2014 08:28:54 GMT-05:00 (CDT)
Last Modified: Tue Apr 29 2014 08:28:53 GMT-05:00 (CDT) 
org.apache.catalina.connector.RECYCLE_FACADES=true