`
bao231
  • 浏览: 87400 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

css cross domain

 
阅读更多
/* 
CSSHttpRequest
Copyright 2008 nb.io - http://nb.io/
Licensed under Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html
*/

(function(){
    var chr = window.CSSHttpRequest = {};
    
    
    chr.id = 0;
    chr.requests = {};
    chr.MATCH_ORDINAL = /#c(\d+)/;
    chr.MATCH_URL = /url\("?data\:[^,]*,([^")]+)"?\)/;
    
    
    chr.get = function(url, callback) {
        var id = ++chr.id;
        var iframe = document.createElement( "iframe" );
        iframe.style.position = "absolute";
        iframe.style.left = iframe.style.top = "-1000px";
        iframe.style.width = iframe.style.height = 0;
        document.documentElement.appendChild(iframe);
        var r = chr.requests[id] = {
            id: id,
            iframe: iframe,
            document: iframe.contentDocument || iframe.contentWindow.document,
            callback: callback
        };
        
        r.document.open("text/html", false);
        r.document.write("<html><head>");
        r.document.write("<link rel='stylesheet' type='text/css' media='print, csshttprequest' href='" + chr.escapeHTML(url) + "' />");
        r.document.write("</head><body>");
        r.document.write("<script type='text/javascript'>");
        r.document.write("(function(){var w = window; var p = w.parent; p.CSSHttpRequest.sandbox(w); w.onload = function(){p.CSSHttpRequest.callback('" + id + "');};})();");
        r.document.write("</script>");
        r.document.write("</body></html>");
        r.document.close();
    };
    
    
    chr.sandbox = function(w) {
    };
        
    
    chr.callback = function(id) {
        var r = chr.requests[id];
        var data = chr.parse(r);
        r.callback(data);
        window.setTimeout(function() {
            var r = chr.requests[id];
            try { r.iframe.parentElement.removeChild(r.iframe); } catch(e) {};
            delete chr.requests[id];
        }, 0);
    };
    
    chr.parse = function(r) {
        var data = [];
        
        // Safari, IE and same-domain Firefox
        try {
            var rules = r.document.styleSheets[0].cssRules || r.document.styleSheets[0].rules;
            for(var i = 0; i < rules.length; i++) {
                try {
                    var r = rules.item ? rules.item(i) : rules[i];
                    var ord = r.selectorText.match(chr.MATCH_ORDINAL)[1];
                    var val = r.style.backgroundImage.match(chr.MATCH_URL)[1];
                    data[ord] = val;
                } catch(e) {}
            }
        }
        
        // catch same-domain exception
        catch(e) {
            r.document.getElementsByTagName("link")[0].setAttribute("media", "screen");
            var x = r.document.createElement("div");
            x.innerHTML = "foo";
            r.document.body.appendChild(x);
            var ord = 0;
            try {
                while(1) {
                    x.id = "c" + ord;
                    var style = r.document.defaultView.getComputedStyle(x, null);
                    var bg = style["background-image"] || style.backgroundImage || style.getPropertyValue("background-image");
                    var val = bg.match(chr.MATCH_URL)[1];
                    data[ord] = val;
                    ord++;
                }
            } catch(e) {}
        }
        
        return decodeURIComponent(data.join(""));
    };
    
    
    chr.escapeHTML = function(s) {
        return s.replace(/([<>&""''])/g,
            function(m, c) {
                switch(c) {
                    case "<": return "&lt;";
                    case ">": return "&gt;";
                    case "&": return "&amp;";
                    case '"': return "&quot;";
                    case "'": return "&apos;";
                }
                return c;
            });
    };
})();
分享到:
评论

相关推荐

    Aspnet-crossdomain-aspnet.zip

    Aspnet-crossdomain-aspnet.zip,一个简单的跨域(跨源)解决方案,通过HTML在多个网站之间发送数据。不需要javascript。使用以下技术堆栈:c,asp.net mvc,asp.net会话状态。跨域asp.net,asp.net是一个开源的web...

    很不错的界面效果,jQuery Css Html实现

    - `crossdomain.xml` 文件用于设置跨域策略,允许来自其他域的Ajax请求访问该网站资源,这对于某些Web应用和服务端API的集成至关重要。 总结起来,这个项目是一个使用jQuery、CSS和HTML构建的前台模板,提供了丰富...

    第十三节 利用CSS特性绕过XSS过滤-01

    在Web安全领域中,XSS(Cross-Site Scripting)是一种常见的攻击方式,它通过在目标网站中插入恶意脚本来攻击用户。为了防止XSS攻击,很多网站都部署了XSS过滤机制。但是,攻击者可以利用CSS特性来绕过XSS过滤机制,...

    JSONet Secure Cross-Domain Data Exchange-开源

    JSONet Secure Cross-Domain Data Exchange 是一个开源项目,旨在解决JavaScript在Web开发中跨域数据交换的安全问题。JSON(JavaScript Object Notation)是广泛用于数据交换的轻量级格式,而JSONet则是在JSON的基础...

    ckplayer 播放m3u8

    为了使CKPlayer能播放来自其他服务器的m3u8流,你需要在你的服务器上配置一个正确的`crossdomain.xml`文件,并确保其可被访问。 另外,`index.html`是CKPlayer的主页面,它包含了播放器的HTML结构和初始化脚本;`...

    免费ckplayer视频播放器

    如果没有正确配置crossdomain.xml,某些浏览器(如Flash支持的浏览器)可能会出于安全考虑阻止视频的加载和播放,导致用户体验下降。因此,确保crossdomain.xml文件的存在并正确设置,对于跨域视频的顺利播放至关...

    jQuery File Upload

    •Cross domain uploads (Cross-site uploads). •How to add Drop zone effects. •How to display Extended progress information. •Drag and drop uploads from another web page •Fixing Safari hanging on ...

    Flex技术介绍

    解决这一问题的一种常见方法是在服务器端放置一个名为`crossdomain.xml`的文件,该文件定义了哪些域被允许访问。此文件的典型内容如下: ```xml &lt;!DOCTYPE cross-domain-policy SYSTEM ...

    qq炫酷务网站源码

    5. **crossdomain.xml**:这个文件用于定义跨域策略,允许或限制不同域名下的Flash内容进行通信,对于处理跨站点数据交换的Flash应用非常重要。 6. **swf**:这可能是一个文件夹,包含了更多与Flash相关的资源,如...

    generator-mobile-boilerplate:脚手架淘汰H5BP移动样板

    ├── crossdomain.xml ├── css │ ├── main.css │ └── normalize.css ├── favicon.ico ├── humans.txt ├── img │ ├── startup │ │ ├── startup-retina-4in.png │ │ ├── ...

    CAP-Tulsa-Website:CAP Tulsa外部网站

    默认的根设置文件(robots.txt,humans.txt,crossdomain.xml,.editorconfig和.htaccess) 特定平台的资源(Craft CMS) 要求 节点/ NPM 部署方式 部署由管理。 GIT master分支更新并推送到后,该站点将自动部署。 ...

    html5快速开发框架

    3. **跨域Ajax支持**:通过使用`crossdomain.xml`,框架允许资源在不同的域名之间进行通信,这对于构建单页应用(SPA)或需要跨域请求数据的网站至关重要。 4. **CSS重置与基础样式**:`normalize.css`用于消除...

    调用资源站可二次解析的解析

    9. `crossdomain.xml`:此文件用于定义跨域策略,允许或限制其他域的Web内容访问该服务器上的资源。 结合这些信息,我们可以构建一个简单的场景:这是一个使用PHP开发的小型网站,提供API服务(api.php),可能有一...

    视频网站.zip

    6. **跨域资源共享(CORS)**:`crossdomain.xml` 文件用于设置服务器允许哪些域名的页面访问其内容,这是跨域资源共享策略的一部分,允许JavaScript从不同源获取数据,对于视频网站的API调用或视频流加载可能有所涉及...

    Domain-to-Domain-Data-Transfer-Sender-App

    在项目结构中,"Domain-to-Domain-Data-Transfer-Sender-App-master"可能包含了源代码文件夹,包括HTML、CSS、JavaScript文件,以及可能的配置文件和测试脚本。其中,JavaScript文件(如`.js`扩展名)是核心部分,...

    JS跨域访问解决方案总结

    4. document.domain:适用于同一顶级域名下的子域名间跨域,通过设置`document.domain`为相同的值,可以让不同子域名的页面互相访问。 5. WebSocket:WebSocket协议本身支持跨域,可以在建立连接时指定允许的源。 ...

    face(1).docx

    - **document.domain**:适用于同一主域下的子域间跨域,将所有相关域的`document.domain`设置为相同。 - **window.name**:窗口的生命周期内,所有页面共享一个`window.name`,可以用来在不同页面间传递数据。 ...

    同源策略以及cookie安全策略

    然而,Adobe的跨域策略文件(crossdomain.xml)允许指定域之间的通信,配置不当可能导致Flash应用被用来绕过同源策略,从而引发安全问题。 【Web认证方式】和【浏览器的安全缺陷】:大部分Web应用依赖Cookie进行...

    跨域上传net

    5. **crossdomain.xml**: 这个文件对于跨域上传至关重要,它是Flash的跨域策略文件,定义了哪些源可以向当前服务器发送请求。在Uploadify使用Flash进行文件上传时,浏览器会自动检查这个文件以确认跨域请求是否被...

    木庄网络MZ-NetBlog主题ASP.NET响应式HTML5博客源码下载

    5. **crossdomain.xml** - 允许其他域的脚本访问此网站资源的XML文件,对于跨域资源共享(CORS)很重要。 6. **css** - CSS目录,包含所有样式表文件,控制网站的外观和布局。 7. **upload** - 可能是一个上传文件的...

Global site tag (gtag.js) - Google Analytics