Cross-Origin Resource Sharing (CORS) and Quixote
Neil Schemenauer <[email protected]> Mon, 27 Nov 2017 13:48:07 -0600
| Newsgroups | gmane.comp.web.quixote.user |
|---|---|
| Message-ID | <[email protected]> |
SSB0aG91Z2h0IEkgYWxyZWFkeSBwb3N0ZWQgc29tZXRoaW5nIGFib3V0IHRoaXMgYnV0IGxvb2tz IGxpa2Ugbm90LgpUaGlzIGlzIGp1c3QgYSBxdWljayBub3RlIHRvIHNoYXJlIGhvdyBDT1JTIGNh biBiZSBkb25lIHdpdGgKUXVpeG90ZS4gIEkgd2FzIGhhcHBpbHkgc3VycHJpc2VkIHRvIGZpbmQg dGhhdCBpdCBjYW4gYmUgZG9uZQp3aXRob3V0IHRvbyBtdWNoIGRpZmZpY3VsdHkuICBUaGUgcHVy cG9zZSBvZiBhbGwgdGhpcyBzb25nLWFuZC1kYW5jZQppcyBzbyB5b3UgY2FuIGhhdmUgQUpBWCBn ZW5lcmF0ZWQgUlBDIGNvbWluZyBmcm9tIGEgY3Jvc3Mtb3JpZ2luCnNpdGUuICBFLmcuLCBpZiB5 b3VyIHNpdGUgcHJvdmlkZXMgYW4gUlBDIGludGVyZmFjZSB0aGF0IHNvbWUgb3RoZXIKc2l0ZSB3 YW50cyB0byB1c2UgZnJvbSBjbGllbnQtc2lkZSBKYXZhc2NyaXB0LgoKRmlyc3QsIHlvdSBuZWVk IHRvIGVuYWJsZSB0aGUgJ09QVElPTlMnIG1ldGhvZC4gIEluIHRoZSBRdWl4b3RlCmNvbmZpZywg c2V0IGFsbG93ZWRfbWV0aG9kcyB0byBbJ0dFVCcsICdIRUFEJywgJ1BPU1QnLCAnT1BUSU9OUydd LgpUaGUgc2VydmVyIG1vZHVsZSB5b3UgYXJlIHVzaW5nIHdpbGwgYWxzbyBoYXZlIHRvIGFsbG93 IE9QVElPTlMuCkZvciB0aGUgcm9vdCBEaXJlY3Rvcnkgb2YgdGhlIHNpdGUsIEkgb3ZlcnJpZGUg dGhlIF9xX3RyYXZlcnNlKCkKbWV0aG9kIHRvIGFsbG93IE9QVElPTlMgb25seSBmb3IgdGhlIHN1 YnRyZWUgd2hlcmUgSSB3YW50IHRvIGFsbG93CkNPUlMuCgoKZGVmIF9jaGVja19hbGxvd2VkX21l dGhvZChwYXRoKToKICAgICMgQ2hlY2sgdGhhdCBIVFRQIG1ldGhvZCBpcyBvbmUgd2UgYWxsb3cu ICBGb3IgdGhlIFJQQyBVUkxzLCB3ZSBhbGxvdwogICAgIyBPUFRJT05TIGluIG9yZGVyIGZvciBD T1JTIHRvIHdvcmsuICBPdGhlcndpc2UsIG9ubHkgYWxsb3cgR0VULCBQT1NULAogICAgIyBIRUFE LgogICAgbWV0aG9kcyA9IFsnR0VUJywgJ1BPU1QnLCAnSEVBRCddCiAgICBpZiBwYXRoWzoxXSA9 PSBbJ3JwYyddOgogICAgICAgIG1ldGhvZHMuYXBwZW5kKCdPUFRJT05TJykKICAgIG1ldGhvZCA9 IGdldF9yZXF1ZXN0KCkuZ2V0X21ldGhvZCgpCiAgICBpZiBtZXRob2Qgbm90IGluIG1ldGhvZHM6 CiAgICAgICAgcmFpc2UgTWV0aG9kTm90QWxsb3dlZEVycm9yKG1ldGhvZHMpCgoKY2xhc3MgUm9v dERpcmVjdG9yeShEaXJlY3RvcnkpOgoKICAgIC4uLgoKICAgIGRlZiBfcV90cmF2ZXJzZShzZWxm LCBwYXRoKToKICAgICAgICBfY2hlY2tfYWxsb3dlZF9tZXRob2QocGF0aCkKICAgICAgICByZXR1 cm4gRGlyZWN0b3J5Ll9xX3RyYXZlcnNlKHNlbGYsIHBhdGgpCgogICAgcnBjID0gUnBjRGlyZWN0 b3J5KCkKCgpOZXh0LCB1bmRlciB0aGUgL3JwYyB0cmVlLCBzZXQgdGhlIENPUlMgaGVhZGVyczoK CmRlZiBfYWRkX2Nyb3NzX3NpdGVfaGVhZGVycygpOgogICAgIyBTZXQgcmVzcG9uc2UgaGVhZGVy cyB0byBhbGxvdyBjcm9zcy1vcmlnaW4tcmVxdWVzdC1zaGFyaW5nIChDT1JTKS4KICAgICMgVGhp cyBpcyBzYWZlIGJlY2F1c2Ugd2UgcmVxdWlyZSB2YWxpZCBIVFRQIEF1dGhlbnRpY2F0aW9uIGhl YWRlcnMKICAgICMgZm9yIGV2ZXJ5IHJlcXVlc3QuCiAgICByZXEgPSBnZXRfcmVxdWVzdCgpCiAg ICAjIGdldCB2YWx1ZSBvZiBvcmlnaW4gaGVhZGVyIGlmIGl0IGV4aXN0cwogICAgb3JpZ2luID0g cmVxLmdldF9oZWFkZXIoJ29yaWdpbicpCiAgICBpZiBub3Qgb3JpZ2luOgogICAgICAgIHJldHVy biAjIGRvbid0IHNldCBleHRyYSBoZWFkZXJzIGlmIE9yaWdpbiBub3Qgc2V0CiAgICBoID0gZ2V0 X3Jlc3BvbnNlKCkuc2V0X2hlYWRlcgogICAgIyBzb21lIGJyb3dzZXJzIHJlcXVpcmUgdGhlIG9y aWdpbiBiZSBzZXQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gJyonCiAgICBoKCdBY2Nlc3MtQ29u dHJvbC1BbGxvdy1PcmlnaW4nLCBvcmlnaW4pCiAgICAjIGdldCB0aGUgaGVhZGVycyB0aGV5IHJl cXVlc3QsIGFsbG93IGFueSBvZiB0aGVtCiAgICBoZWFkZXJzID0gcmVxLmdldF9oZWFkZXIoJ2Fj Y2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycycpCiAgICBoKCdBY2Nlc3MtQ29udHJvbC1BbGxv dy1IZWFkZXJzJywgaGVhZGVycyBvciAnQXV0aGVudGljYXRpb24nKQogICAgaCgnQWNjZXNzLUNv bnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QnKQogICAgaCgnQWNjZXNzLUNvbnRyb2wt TWF4LUFnZScsICcxJykgIyBmb3IgZGVidWdnaW5nCgoKZGVmIF9oYW5kbGVfb3B0aW9uc19tZXRo b2QoKToKICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGNoZWNraW5nIHRoZSAnQXV0aGVu dGljYXRpb24nIGhlYWRlciBhcwogICAgIyB0aGUgYnJvd3NlciBkb2Vzbid0IHNlbmQgaXQgd2hl biBzZW5kaW5nIHRoZSBPUFRJT05TIHJlcXVlc3QuCiAgICBfYWRkX2Nyb3NzX3NpdGVfaGVhZGVy cygpCiAgICBtID0gZ2V0X3JlcXVlc3QoKS5nZXRfbWV0aG9kKCkKICAgIGlmIG0gPT0gJ09QVElP TlMnOgogICAgICAgICMgaGFuZGxlIE9QVElPTlMgbWV0aG9kLCBzZXQgaGVhZGVycyBhbmQgcmV0 dXJuIGVtcHR5IGJvZHkKICAgICAgICBnZXRfcmVzcG9uc2UoKS5zZXRfaGVhZGVyKCdBbGxvdycs ICdHRVQsIFBPU1QnKQogICAgICAgIGdldF9yZXNwb25zZSgpLnNldF9oZWFkZXIoJ0NvbnRlbnQt TGVuZ3RoJywgJzAnKQogICAgICAgIHJldHVybiBUcnVlICMgaGVhZGVycyBoYXZlIGJlZW4gc2V0 LCB3ZSBhcmUgZG9uZQogICAgcmV0dXJuIEZhbHNlICMgcHJvY2VzcyByZXF1ZXN0IG5vcm1hbGx5 CiAKCmNsYXNzIFJwY0RpcmVjdG9yeShEaXJlY3RvcnkpOgoKICAgIC4uLgoKICAgIGRlZiBfcV90 cmF2ZXJzZShzZWxmLCBwYXRoKToKICAgICAgICBpZiBfaGFuZGxlX29wdGlvbnNfbWV0aG9kKCk6 CiAgICAgICAgICAgIHJldHVybiAnJyAjIE9QVElPTlMgbWV0aG9kOiBoZWFkZXJzIHNldCwgcmV0 dXJuIGVtcHR5IGJvZHkKICAgICAgICByZXF1aXJlX2Jhc2ljX2F1dGgoKSAjIHJhaXNlcyA0MDEg VW5hdXRob3JpemVkIGlmIGZhaWxzCiAgICAgICAgLi4uCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClF1aXhvdGUtdXNlcnMgbWFpbGluZyBsaXN0ClF1aXhv dGUtdXNlcnNAbGlzdHMucXVpeG90ZS5jYQpodHRwOi8vbGlzdHMucXVpeG90ZS5jYS9jZ2ktYmlu L21haWxtYW4vbGlzdGluZm8vcXVpeG90ZS11c2Vycwo=