/* * Copyright 2017 Async-IO.org * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.atmosphere.sockjs; import java.io.UnsupportedEncodingException; public class IFrameUtils { public static byte[] generateIFrame(String origin) { StringBuilder b = new StringBuilder(); b.append("<!DOCTYPE html>\n").append( "<html>\n").append( "<head>\n").append( " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n").append( " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n").append( " <script>\n").append( " document.domain = document.domain;\n").append( " _sockjs_onload = function(){SockJS.bootstrap_iframe();};\n").append( " </script>\n").append( " <script src=\"").append(origin).append("\"></script>\n").append( "</head>\n").append( "<body>\n").append( " <h2>Don't panic!</h2>\n").append( " <p>This is a SockJS hidden iframe. It's used for cross domain magic.</p>\n").append( "</body>\n").append( "</html>"); try { return b.toString().getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { return b.toString().getBytes(); } } public static byte[] generateHtmlFile(String callback) { StringBuilder b = new StringBuilder(); b.append("<!doctype html>\n").append( "<html><head>\n").append( " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n").append( " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n").append( "</head><body><h2>Don't panic!</h2>\n").append( " <script>\n").append( " document.domain = document.domain;\n").append( " var c = parent.").append(callback).append(";\n").append( " c.start();\n").append( " function p(d) {c.message(d);};\n").append( " window.onload = function() {c.stop();};\n").append( " </script>"); try { return b.toString().getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { return b.toString().getBytes(); } } }