在Firefox 9& 10使用Firebug和Live Headers, 我看到websocket请求/响应对是跨域发送但使用错误的Cookie:contents。
提供两个网址 -
基本网页 - http://www.mysite.test/mywebapp
Websocket网址 - http://stompeserver.mysite.test/stomp
浏览器似乎正在发送基页主机名的cookie,而不是与辅助主机名相关的任何cookie。即,加载了基本网页的JSESSIONID cookie正在回显到外部连接。
这是一个错误还是预期的行为?在任何地方我都没有看到如何将websockets作为对cookie的反应。
IMO,通过将网站的Cookie暴露给外部websocket服务,这可能是一种非常严重的安全违规行为。
更新到firefox 10并仍然看到问题。
以下是两个背靠背连接的略微明确的实时标题跟踪
将JSESSIONID和CLIENT_LOCALE cookie从应用服务器的9443复制到mq服务器的61623.
----------------------------------------------------------
https://myapp.com:9443/server/themes/standard/public/gwt/xxstandard/images/logout-icon.png
GET https://myapp.com:9443/server/themes/standard/public/gwt/xxstandard/images/logout-icon.png HTTP/1.1
Host: myapp.com:9443
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: https://myapp.com:9443/server/example.htm?gwt.codesvr=127.0.0.1:9997&log_level=INFO
Cookie: JSESSIONID=0000wCOpgfIsSNOz2lL22O5LOiI:-1; CLIENT_LOCALE=en_US;
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.1 200 OK
Date: Thu, 16 Feb 2012 19:02:55 GMT
Content-Type: text/plain
Last-Modified: Wed, 29 Jun 2011 20:44:11 GMT
Content-Length: 669
Content-Language: en-US
Server: WebSphere Application Server/7.0
----------------------------------------------------------
http://myapp.com:61623/stomp
GET http://myapp.com:61623/stomp HTTP/1.1
Host: myapp.com:61623
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Sec-WebSocket-Version: 8
Sec-WebSocket-Origin: https://myapp.com:9443
Sec-WebSocket-Key: FToA/HGiVQN3CbGOgNffMA==
Cookie: JSESSIONID=0000wCOpgfIsSNOz2lL22O5LOiI:-1; CLIENT_LOCALE=en_US;
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Connection: Upgrade
HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: 5lqrLU4mbPiEasSn4gqOlqWvGgw=
----------------------------------------------------------
答案 0 :(得分:2)
同源策略和CORS不适用于WebSockets。
使用WS,在初始WS打开握手中发送“origin”HTTP头,对于浏览器,此源头必须包含最初服务于打开WS的HTML / JS的服务器的主机名。
然后,WS服务器可以自由接受/拒绝。
对于非浏览器WS客户端,原始标头可能存在也可能不存在,并且可能包含任何内容。
Cookies:WS规范没有规定。请参阅Patrick的回复(Firefox WS开发人员)
http://www.ietf.org/mail-archive/web/hybi/current/msg08017.html