зеркало из https://github.com/mozilla/gecko-dev.git
91 строка
2.6 KiB
JavaScript
91 строка
2.6 KiB
JavaScript
// Test server for bug 1268962
|
|
'use strict';
|
|
Components.utils.importGlobalProperties(["URLSearchParams"]);
|
|
const HTTPStatus = new Map([
|
|
[100, 'Continue'],
|
|
[101, 'Switching Protocol'],
|
|
[200, 'OK'],
|
|
[201, 'Created'],
|
|
[202, 'Accepted'],
|
|
[203, 'Non-Authoritative Information'],
|
|
[204, 'No Content'],
|
|
[205, 'Reset Content'],
|
|
[206, 'Partial Content'],
|
|
[300, 'Multiple Choice'],
|
|
[301, 'Moved Permanently'],
|
|
[302, 'Found'],
|
|
[303, 'See Other'],
|
|
[304, 'Not Modified'],
|
|
[305, 'Use Proxy'],
|
|
[306, 'unused'],
|
|
[307, 'Temporary Redirect'],
|
|
[308, 'Permanent Redirect'],
|
|
[400, 'Bad Request'],
|
|
[401, 'Unauthorized'],
|
|
[402, 'Payment Required'],
|
|
[403, 'Forbidden'],
|
|
[404, 'Not Found'],
|
|
[405, 'Method Not Allowed'],
|
|
[406, 'Not Acceptable'],
|
|
[407, 'Proxy Authentication Required'],
|
|
[408, 'Request Timeout'],
|
|
[409, 'Conflict'],
|
|
[410, 'Gone'],
|
|
[411, 'Length Required'],
|
|
[412, 'Precondition Failed'],
|
|
[413, 'Request Entity Too Large'],
|
|
[414, 'Request-URI Too Long'],
|
|
[415, 'Unsupported Media Type'],
|
|
[416, 'Requested Range Not Satisfiable'],
|
|
[417, 'Expectation Failed'],
|
|
[500, 'Internal Server Error'],
|
|
[501, 'Not Implemented'],
|
|
[502, 'Bad Gateway'],
|
|
[503, 'Service Unavailable'],
|
|
[504, 'Gateway Timeout'],
|
|
[505, 'HTTP Version Not Supported']
|
|
]);
|
|
|
|
const SAME_ORIGIN = 'http://mochi.test:8888/tests/dom/base/test/file_bug1268962.sjs';
|
|
const CROSS_ORIGIN = 'http://example.com/tests/dom/base/test/file_bug1268962.sjs';
|
|
|
|
function handleRequest(request, response) {
|
|
const queryMap = new URLSearchParams(request.queryString);
|
|
|
|
// Check redirection before everything else.
|
|
if (queryMap.has('redirect')) {
|
|
let redirect = queryMap.get('redirect');
|
|
let location;
|
|
if (redirect == 'sameorigin') {
|
|
location = SAME_ORIGIN;
|
|
} else if (redirect == 'crossorigin') {
|
|
location = CROSS_ORIGIN;
|
|
}
|
|
|
|
if (location) {
|
|
// Use HTTP 302 redirection.
|
|
response.setStatusLine('1.1', 302, HTTPStatus.get(302));
|
|
|
|
// Forward query strings except the redirect option.
|
|
queryMap.delete('redirect');
|
|
response.setHeader('Location', location + '?' + queryMap.toString());
|
|
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (queryMap.has('statusCode')) {
|
|
let statusCode = parseInt(queryMap.get('statusCode'));
|
|
let statusText = HTTPStatus.get(statusCode);
|
|
response.setStatusLine('1.1', statusCode, statusText);
|
|
}
|
|
if (queryMap.has('cacheControl')) {
|
|
let cacheControl = queryMap.get('cacheControl');
|
|
response.setHeader('Cache-Control', cacheControl);
|
|
}
|
|
if (queryMap.has('allowOrigin')) {
|
|
let allowOrigin = queryMap.get('allowOrigin');
|
|
response.setHeader('Access-Control-Allow-Origin', allowOrigin);
|
|
}
|
|
}
|