auth_post.sjs (941B)
1 const CC = Components.Constructor; 2 const BinaryInputStream = CC( 3 "@mozilla.org/binaryinputstream;1", 4 "nsIBinaryInputStream", 5 "setInputStream" 6 ); 7 8 function readStream(inputStream) { 9 let available = 0; 10 let result = []; 11 while ((available = inputStream.available()) > 0) { 12 result.push(inputStream.readBytes(available)); 13 } 14 15 return result.join(""); 16 } 17 18 function handleRequest(request, response) { 19 if (request.method != "POST") { 20 response.setStatusLine(request.httpVersion, 405, "Method Not Allowed"); 21 return; 22 } 23 24 if (request.hasHeader("Authorization")) { 25 let data = ""; 26 try { 27 data = readStream(new BinaryInputStream(request.bodyInputStream)); 28 } catch (e) { 29 data = `${e}`; 30 } 31 response.bodyOutputStream.write(data, data.length); 32 return; 33 } 34 35 response.setStatusLine(request.httpVersion, 401, "Unauthorized"); 36 response.setHeader("WWW-Authenticate", `basic realm="test"`, true); 37 }