We had some problems with cross domain SOLO deployment too.

There was a thread titled "Using PHP to proxy content" on this list back in
April that offered some creative solutions involving JSP.  I've attached the
part of the thread to the end of this email (after the #####'s).





-----Original Message-----
From: Grzegorz Jakacki [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 01, 2006 5:49 AM
To: [email protected]
Subject: [Laszlo-user] Problems with cross-domain SOLO deployment


Hello,

I am having problems with SOLO cross-domain deployment. I created a
small allplication that is served from host LOCAL.FOO.COM and makes HTTP
request to host REMOTE.BAR.COM . There is a
http://remote.bar.com/crossdomain.xml set up properly to allow requests
from Flash applications served by local.foo.com .

When I serve the application using LPS on LOCAL, things work --- it
connects to REMOTE and downloads data.

If I compile the application to SWF and serve using Apache from LOCAL,
things break --- it fails to load the data from REMOTE (I do not even
get 'ontimeout' in reasonable time).

Am I doing something wrong or maybe this mode of operation is not
supported by Laszlo?

Thanks
Greg

PS: LPS-3.1, SWF6.

--
Grzegorz Jakacki, Senior Software Eng.
greg(at)exoweb.net, +86-136-93228804





##########################################################################
##########################################################################
##########################################################################




-----Original Message-----
From: William Krick [mailto:[EMAIL PROTECTED]
Sent: Wednesday, April 05, 2006 1:32 PM
To: Henry Minsky
Cc: [email protected]
Subject: Re: [Laszlo-user] Using PHP to proxy content


To handle the encoding problem, you can always craft a JSP specifically to
wrap each URL you need to call and change the <%page charset directive at
the bottom accordingly.

I was thinking that there's probably some way to directly connect the input
stream from the URL connection to the output stream of the JSP like a crude
pipe of some sort but I couldn't figure out how to do it. I ended up reading
data in a loop.

To pass the data as raw bytes, you can probably use this code in the JSP...

    BufferedInputStream in = null;
    BufferedOutputStream out = null;
    try {
      in = new BufferedInputStream(new FileInputStream(srcFile));
      out = new BufferedOutputStream(new FileOutputStream(dstFile));
      byte[] buffer = new byte[8 * 1024];
      int count;
      while ( (count = in.read(buffer)) >= 0) {
        out.write(buffer, 0, count);
      }
    }
    catch (IOException ex) {
      // handle exceptions here
    }
    finally {
      if (in != null)
        try { in.close(); } catch (IOException e) {}
      if (out != null)
        try { out.close(); } catch (IOException e) {}
    }

-----Original Message-----
From: Henry Minsky [mailto:[EMAIL PROTECTED]
Sent: Wednesday, April 05, 2006 12:39 PM
To: William Krick
Cc: Benjamin Shine; Matt Hubbard; [email protected]
Subject: Re: [Laszlo-user] Using PHP to proxy content


That is handy.. there is an issue if the data source for the  XML is not
using an encoding of UTF-8, of course.


You could either forward the data as a byte stream, or else try to parse out
the
encoding  in the <?xml ...?> declaration and convert it to UTF-8, which
would be doing a favor for clients that
don't have a wide range of charset encodings that they understand. I found
that emprically the Flash player seems to have a lot fewer encodings it
understands than does the Java VM we are using on the server.

The LPS server proxy attempts to read the encoding from the XML declaration,
but there have been some bugs reported recently from Chinese users, so that
functionality needs to be have more unit testing written for it at some
point.

As of release 3.2, the LPS server proxies XML as text data, rather than
encoding it as swf (the Flash XML parser is finally fast enough, and the
server code is a lot easier to maintain). The LPS server wraps the data
inside an XML wrapper which contains HTTP header data. I have been working
in my spare time on making an optimization to the server which would notice
whether the app is requesting HTTP header info, and if it does not, to just
proxy the XML data as a byte stream. That would improve throughput because
the server would have to do the very minimum scanning and string
manipulation of the data as it flows by.








On 4/5/06, William Krick <[EMAIL PROTECTED]> wrote:
I don't know if this is useful in this case or not but it's possible to wrap
a call to a URL on a different server in a local JSP like this example
"getdata.jsp" that I use for calling a web service that returns XML...

<%
  try {
    String urlstring = "http://www.domain.com/webapp/getxmldata";;
    URL url = new URL(urlstring);
    URLConnection con = url.openConnection();
    BufferedReader br = new BufferedReader(new
InputStreamReader(con.getInputStream()));
    String line = "";
    while ((line = br.readLine()) != null)
      out.println(line);
    br.close();
  }
  catch (Exception e) {
    // handle exceptions here
  }
%>
<[EMAIL PROTECTED] import="java.io.*"%>
<[EMAIL PROTECTED] import="java.net.*"%>
<[EMAIL PROTECTED] contentType="text/xml; charset=UTF-8" %>



...You can also relay parameters by using request.getQueryString() for GET
requests or request.getParameter() for POST requests to get at the data.

And if you really want to get fancy, you could "genericize" the whole thing
by passing the URL to call as the first parameter, followed by the
parameters to relay.

Note that you have to put the "import" and whatnot at the bottom when
dealing with XML otherwise they cause newlines to appear at the beginning of
the output which breaks stuff since the <xml> directive isn't the first line
in the document.



-----Original Message-----
From: Benjamin Shine [mailto:[EMAIL PROTECTED] ]
Sent: Wednesday, April 05, 2006 11:53 AM
To: Matt Hubbard
Cc: [email protected]
Subject: Re: [Laszlo-user] Using PHP to proxy content


This sounds like a crossdomain.xml problem. Flash doesn't let you
load content from another domain than the one that served up the swf
unless the other domain has crossdomain.xml on it and includes your
domain in the list of allowed domains.
In this example, you own example.com, right? So you could put your
own crossdomain.xml on it, which should take care of it.

-ben

On Apr 5, 2006, at 5:37 AM, Matt Hubbard wrote:

> Hello,
>
> My environment:
> Linux
> lps-3.1.1
> Flash 7 plugin
> SOLO deployment
>
> I am attempting to proxy an swf from another domain into an openlaszlo
> text view using a server-side proxy written in php.  In lzx I create a
> URL to that points to the proxy script passing several parameters
> (session id, action to be executed, and a urlencoded filename).
>
> var asset = '<img src="' + gateway + '?PHPSESSID=' + canvas.sid +
> '&assetSrc=' + assetSrc + '&action=media' + '"/>';
>
> Then I add the resulting <img> tag to a text view called content:
>
> content.addText(asset);
>
> I don't get an error, but nothing shows up.  If I write  the asset var
> to the Debugger it reads correctly and if I visit that same url
> with my
> browser directly it returns and plays the animation just fine, so I
> think the php works.  I notice that if I change my proxy call from:
>
> http://www.example.com/proxy.php?x=y&a=b
>
> to
>
> http://www.example.com/proxy.swf
> (here proxy.swf is my php proxy script with a hardcoded url to
> retrieve
> )
>
> Suddenly it works.  However, I need to be able to pass the resource to
> retrieve to the proxy.  Can anyone shed some light on what I need
> to do
> to get the text view to recognize my url as a call for flash?
>
> Many thanks,
>
> Matt Hubbard
>
>
>
>

_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user

Reply via email to