2 require_once 'portabilityLayer.php';
4 $tmpFile = ensureTrailingSlash(sys_get_temp_dir()) . $_GET['filename'];
8 header("Access-Control-Origin: http://127.0.0.1:8000");
9 header("Access-Control-Credentials: true");
10 header("Access-Control-Allow-Methods: PUT");
11 header("Access-Control-Allow-Headers: x-webkit-test");
12 echo "FAIL: " . $_SERVER['REQUEST_METHOD'] . "\n";
16 function setState($newState, $file)
18 file_put_contents($file, $newState);
21 function getState($file)
23 if (!file_exists($file)) {
24 return "Uninitialized";
26 return file_get_contents($file);
29 $state = getState($tmpFile);
31 if ($state == "Uninitialized") {
32 if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") {
33 header("Access-Control-Origin: http://127.0.0.1:8000");
34 header("Access-Control-Credentials: true");
35 header("Access-Control-Allow-Methods: PUT");
36 header("Access-Control-Allow-Headers: x-webkit-test");
37 header("Access-Control-Max-Age: 10"); // 10 seconds
38 setState("OptionsSent", $tmpFile);
42 } else if ($state == "OptionsSent") {
43 if ($_SERVER['REQUEST_METHOD'] == "PUT") {
44 header("Access-Control-Origin: http://127.0.0.1:8000");
45 header("Access-Control-Credentials: true");
46 echo "PASS: First PUT request.";
47 setState("FirstPUTSent", $tmpFile);
51 } else if ($state == "FirstPUTSent") {
52 if ($_SERVER['REQUEST_METHOD'] == "PUT") {
53 header("Access-Control-Origin: http://127.0.0.1:8000");
54 header("Access-Control-Credentials: true");
55 echo "PASS: Second PUT request. Preflight worked";
56 } else if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") {
57 header("Access-Control-Origin: http://127.0.0.1:8000");
58 header("Access-Control-Credentials: true");
59 header("Access-Control-Allow-Methods: PUT");
60 header("Access-Control-Allow-Headers: x-webkit-test");
61 setState("FAILSecondOPTIONSSent", $tmpFile);
63 } else if ($state == "FAILSecondOPTIONSSent") {
64 if ($_SERVER['REQUEST_METHOD'] == "PUT") {
65 header("Access-Control-Origin: http://127.0.0.1:8000");
66 header("Access-Control-Credentials: true");
67 echo "FAIL: Second OPTIONS request was sent. Preflight failed";