[Webkit-unassigned] [Bug 61862] New: EventSource does not allow cross-domain access
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Jun 1 08:13:38 PDT 2011
https://bugs.webkit.org/show_bug.cgi?id=61862
Summary: EventSource does not allow cross-domain access
Product: WebKit
Version: 528+ (Nightly build)
Platform: All
OS/Version: All
Status: UNCONFIRMED
Severity: Critical
Priority: P2
Component: WebKit API
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: goberman at msn.com
I set "Access-Control-Allow-Origin" header to "*" in server response to enable cross-domain requests.
This works for XHR, but does not work for EventSource. Can EventSource be enhanced to support cross-domain calls.
SERVER
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WebFrameworkServletEventSource extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Begin for session: " + request.getSession(true).getId() + " " + response.getWriter());
response.setHeader("pragma", "no-cache,no-store");
response.setHeader("cache-control", "no-cache,no-store,max-age=0,max-stale=0");
response.setHeader("Connection", "close");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("text/event-stream");
PrintWriter out = response.getWriter();
int messagesSent = 0;
while (true) {
out.print("data: ");
out.print("{\"m\":8448,\"r\":0,\"e\":1,\"s\":[\"BAC.\",0],\"f\":[[0,6,3993,2],[55,6,1185,2],[54,6,3218,2],[5,6,6617,2],[52,4,15],[12,6,1700,2]]}");
out.print("\n\n");
out.flush();
messagesSent++;
try {
Thread.sleep(2000);
} catch (InterruptedException e1) {
}
}
}
}
CLIENT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>test</title>
</head>
<body>
<input type="button" value="TEST" onclick="test(); return false;" />
<script type="text/javascript">
var domElement;
var messagesProcessed = 0;
var eventSrc;
function test() {
domElement = document.getElementsByTagName('body')[0];
debug('connect');
try {
eventSrc = new EventSource('http://cross-domain-address/Test/Controller');
}
catch (e) {
debug('exception');
}
eventSrc.onopen = function (event) {
debug('open ' + event.type);
};
eventSrc.onerror = function (event) {
debug('error ' + event.type);
eventSrc.close();
};
eventSrc.onmessage = function (event) {
//debug(event.type + ' ' + event.data);
};
}
function debug(message) {
var oText = document.createTextNode(message);
var oDiv = document.createElement('div');
oDiv.appendChild(oText);
domElement.insertBefore(oDiv, domElement.hasChildNodes() ? domElement.childNodes[0] : null);
}
</script>
</body>
</html>
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list