/*
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 "<";
case ">": return ">";
case "&": return "&";
case '"': return """;
case "'": return "'";
}
return c;
});
};
})();
分享到:
相关推荐
Aspnet-crossdomain-aspnet.zip,一个简单的跨域(跨源)解决方案,通过HTML在多个网站之间发送数据。不需要javascript。使用以下技术堆栈:c,asp.net mvc,asp.net会话状态。跨域asp.net,asp.net是一个开源的web...
- `crossdomain.xml` 文件用于设置跨域策略,允许来自其他域的Ajax请求访问该网站资源,这对于某些Web应用和服务端API的集成至关重要。 总结起来,这个项目是一个使用jQuery、CSS和HTML构建的前台模板,提供了丰富...
在Web安全领域中,XSS(Cross-Site Scripting)是一种常见的攻击方式,它通过在目标网站中插入恶意脚本来攻击用户。为了防止XSS攻击,很多网站都部署了XSS过滤机制。但是,攻击者可以利用CSS特性来绕过XSS过滤机制,...
JSONet Secure Cross-Domain Data Exchange 是一个开源项目,旨在解决JavaScript在Web开发中跨域数据交换的安全问题。JSON(JavaScript Object Notation)是广泛用于数据交换的轻量级格式,而JSONet则是在JSON的基础...
为了使CKPlayer能播放来自其他服务器的m3u8流,你需要在你的服务器上配置一个正确的`crossdomain.xml`文件,并确保其可被访问。 另外,`index.html`是CKPlayer的主页面,它包含了播放器的HTML结构和初始化脚本;`...
如果没有正确配置crossdomain.xml,某些浏览器(如Flash支持的浏览器)可能会出于安全考虑阻止视频的加载和播放,导致用户体验下降。因此,确保crossdomain.xml文件的存在并正确设置,对于跨域视频的顺利播放至关...
•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 ...
解决这一问题的一种常见方法是在服务器端放置一个名为`crossdomain.xml`的文件,该文件定义了哪些域被允许访问。此文件的典型内容如下: ```xml <!DOCTYPE cross-domain-policy SYSTEM ...
5. **crossdomain.xml**:这个文件用于定义跨域策略,允许或限制不同域名下的Flash内容进行通信,对于处理跨站点数据交换的Flash应用非常重要。 6. **swf**:这可能是一个文件夹,包含了更多与Flash相关的资源,如...
├── crossdomain.xml ├── css │ ├── main.css │ └── normalize.css ├── favicon.ico ├── humans.txt ├── img │ ├── startup │ │ ├── startup-retina-4in.png │ │ ├── ...
默认的根设置文件(robots.txt,humans.txt,crossdomain.xml,.editorconfig和.htaccess) 特定平台的资源(Craft CMS) 要求 节点/ NPM 部署方式 部署由管理。 GIT master分支更新并推送到后,该站点将自动部署。 ...
3. **跨域Ajax支持**:通过使用`crossdomain.xml`,框架允许资源在不同的域名之间进行通信,这对于构建单页应用(SPA)或需要跨域请求数据的网站至关重要。 4. **CSS重置与基础样式**:`normalize.css`用于消除...
9. `crossdomain.xml`:此文件用于定义跨域策略,允许或限制其他域的Web内容访问该服务器上的资源。 结合这些信息,我们可以构建一个简单的场景:这是一个使用PHP开发的小型网站,提供API服务(api.php),可能有一...
6. **跨域资源共享(CORS)**:`crossdomain.xml` 文件用于设置服务器允许哪些域名的页面访问其内容,这是跨域资源共享策略的一部分,允许JavaScript从不同源获取数据,对于视频网站的API调用或视频流加载可能有所涉及...
在项目结构中,"Domain-to-Domain-Data-Transfer-Sender-App-master"可能包含了源代码文件夹,包括HTML、CSS、JavaScript文件,以及可能的配置文件和测试脚本。其中,JavaScript文件(如`.js`扩展名)是核心部分,...
4. document.domain:适用于同一顶级域名下的子域名间跨域,通过设置`document.domain`为相同的值,可以让不同子域名的页面互相访问。 5. WebSocket:WebSocket协议本身支持跨域,可以在建立连接时指定允许的源。 ...
- **document.domain**:适用于同一主域下的子域间跨域,将所有相关域的`document.domain`设置为相同。 - **window.name**:窗口的生命周期内,所有页面共享一个`window.name`,可以用来在不同页面间传递数据。 ...
然而,Adobe的跨域策略文件(crossdomain.xml)允许指定域之间的通信,配置不当可能导致Flash应用被用来绕过同源策略,从而引发安全问题。 【Web认证方式】和【浏览器的安全缺陷】:大部分Web应用依赖Cookie进行...
5. **crossdomain.xml**: 这个文件对于跨域上传至关重要,它是Flash的跨域策略文件,定义了哪些源可以向当前服务器发送请求。在Uploadify使用Flash进行文件上传时,浏览器会自动检查这个文件以确认跨域请求是否被...
5. **crossdomain.xml** - 允许其他域的脚本访问此网站资源的XML文件,对于跨域资源共享(CORS)很重要。 6. **css** - CSS目录,包含所有样式表文件,控制网站的外观和布局。 7. **upload** - 可能是一个上传文件的...