<p>Test that custom headers are not sent with OPTIONS preflight request.</p>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

function resetStatus()
{
    var req = new XMLHttpRequest;
    req.open("GET", "/resources/reset-temp-file.php?filename=access-control-preflight-headers-sync-status", false);
    req.send();
}

function sendRequest()
{
    try {
        var req = new XMLHttpRequest;
        req.open("GET", "http://localhost:8000/xmlhttprequest/resources/no-custom-header.php?filename=access-control-preflight-headers-sync-status", false);
        req.setRequestHeader("X-Custom-Header", "foobar");
        req.send();
        document.write("<xmp>" + req.responseText + "</xmp>");
    } catch (ex) {
        document.write("<xmp>" + ex + "</xmp>");
    }
}

resetStatus();
sendRequest();
</script>
