|
|
||
// クライアント側 var xhr = new XMLHttpRequest(); // 外部ドメインにアクセス xhr.open("GET", "http://example.org", false); xhr.send(null); alert(xhr.responseText);
#!/usr/bin/perl # サーバー側 (GET) use strict; print "Content-Type: text/plain\n"; print "Access-Control: allow <http://example.com>\n\n"; print "Hello world!\n";
#!/usr/bin/perl # サーバー側 (GET 以外) use strict; if ($ENV{'REQUEST_METHOD'} eq "OPTIONS") { print "Content-Type: text/plain\n"; print "Access-Control: allow <http://example.com>\n\n"; } else { print "Content-Type: text/plain\n\n"; print "Hello, world!\n"; }
// クライアント側 var xdr = new XDomainRequest(); xdr.open('GET', 'http://amachang.art-code.org/amachang.cgi'); xdr.send(null); xdr.onload = function() { alert('load') };
#! /usr/bin/perl # サーバ側 use strict; print "Content-type: text/plain\n"; print "XDomainRequestAllowed: 1\n\n"; # ↑ ( ゚д゚) print "hoge\n"
IE 8 Beta 2 くらいで、 Access Control for Cross-site Request に対応するよ!
by IE チームの人
RE: [access-control] Update from Sunava Dutta on 2008-07-09 (public-webapps@w3.org from July to September 2008)
IE 8 Beta 2 くらいで、 Access Control for Cross-site Request に対応するよ!
by IE チームの人
RE: [access-control] Update from Sunava Dutta on 2008-07-09 (public-webapps@w3.org from July to September 2008)
IE 8 Beta 2 くらいで、 Access Control for Cross-site Request に対応するよ!
by IE チームの人
RE: [access-control] Update from Sunava Dutta on 2008-07-09 (public-webapps@w3.org from July to September 2008)
Access-Control: allow <*> Access-Control: allow <http://example.com> Access-Control: allow <http://example.com:*> Access-Control: allow <http://example.com:80>
Access-Control: allow <example.com:1234> Access-Control: allow <*.example.com> <*.example.org> Access-Control: allow <http://*.example.org> exclude <http://public.example.com>
<?access-control allow="*.example.com" exclude="public.example.com" ?> <hoge> <piyo></piyo> : </hoge>
<event-source id="source" src="http://example.com/hoge.cgi"/> <script type="text/javascript"> var elm = document.getElementById('source'); elm.addEventLisntener('hoge', function(e) { alert(e.data); }); </script>
#!/usr/bin/perl print "Content-Type: text/plain\n"; print "Access-Control: allow <http://example.org>\n\n"; my $data = 1000; while ($data--) { sleep(10); print "Event: hoge\n" print "data: $data\n\n"; }
var elm = document.querySelector( "body > div.section > ul > li"); var elms = elm.querySelectorAll("p > strong");
<!-- チェックされた要素の親の li を選択できない>< --> <ul> <li><input type="checkbox" /></li> <li><input type="checkbox" /></li> </ul>
var ul = document.getElementsByTagName('ul')[0]; // 直接の子要素だけで調べたいの。。 var list = ul.querySelectorAll('> li.hoge'); // ↑これは出来ない>< var list = ul.querySelectorAll('li.hoge'); // ↑これだと孫要素とかも含まれちゃう><
// 送信側 var win = iframeElm.contentWindow; win.postMessage('Hello!', 'http://example.com');
// 受信側 function handler(e) { if (e.origin == 'http://example.org') { alert(e.data); e.source.postMessage('ok', e.origin); } } window.addEventListener( 'message', handler, false);
// 受信側 function handler(e) { if (!e.origin && e.scheme && e.domain) { e.origin = e.scheme + '://' + e.domain; } else if (!e.origin && e.uri) { e.origin = e.uri.match(/^(.*?:\/\/.*?)(?:\/|$)/)[1]; } if (e.origin == 'http://example.org') { alert(e.data); e.source.postMessage('ok', e.origin); } } window.addEventListener ? window.addEventListener('message', handler, false) : document.attachEvent('onmessage', function() { handler(window.event) });
function handler(e) { if (e.origin == 'http://example.org') { var xhr = new XMLHttpRequest(); xhr.open('GET', '/hoge.json'); xhr.send(); e.source.postMessage( xhr.responseText, e.origin); } } window.addEventListener( 'message', handler, false);
var win = window.open('http://hoge.com'); win.postMessage( 'set:hoge=fuga', 'http://hoge.com'); win.postMessage( 'get:hoge', 'http://hoge.com'); win.addEventListener('message', function(e) { alert(e.data); }, false);
window.addEventListener('message', function(e) { if (e.data.match(/^set:/)) { var splited = e.data.split(':')[1].split('='); globalStorage[splited[0]] = splited[1]; } else if (e.data.match(/^get:/)) { e.source.postMessage( globalStorage[e.data.split(':')[1]], e.origin); } }, false);