[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