move cors-test-page to literal include
This makes it so test-cors.html is a real file in doc/source so it's easy for those in the know to jump in there with a `python -m SimpleHTTPServer` and point their webbrowser to `http://localhost:8000/test-cors.html`. The example html and javascript still appear in the docs in their entirety using the Sphinx literal include directive. Change-Id: Ia0ba36df6c58795e3764fa53b7f585dcc1b3be07
This commit is contained in:
parent
6cdf784e2f
commit
6514a485d5
@ -79,71 +79,14 @@ something went wrong the response status will be 0.
|
|||||||
|
|
||||||
.. _test CORS page:
|
.. _test CORS page:
|
||||||
|
|
||||||
|
--------------
|
||||||
Test CORS Page
|
Test CORS Page
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
::
|
A sample cross-site test page is located in the project source tree
|
||||||
|
``doc/source/test-cors.html``.
|
||||||
|
|
||||||
<!DOCTYPE html>
|
.. literalinclude:: test-cors.html
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test CORS</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
Token<br><input id="token" type="text" size="64"><br><br>
|
|
||||||
|
|
||||||
Method<br>
|
|
||||||
<select id="method">
|
|
||||||
<option value="GET">GET</option>
|
|
||||||
<option value="HEAD">HEAD</option>
|
|
||||||
<option value="POST">POST</option>
|
|
||||||
<option value="DELETE">DELETE</option>
|
|
||||||
<option value="PUT">PUT</option>
|
|
||||||
</select><br><br>
|
|
||||||
|
|
||||||
URL (Container or Object)<br><input id="url" size="64" type="text"><br><br>
|
|
||||||
|
|
||||||
<input id="submit" type="button" value="Submit" onclick="submit(); return false;">
|
|
||||||
|
|
||||||
<pre id="response_headers"></pre>
|
|
||||||
<p>
|
|
||||||
<hr>
|
|
||||||
<pre id="response_body"></pre>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
function submit() {
|
|
||||||
var token = document.getElementById('token').value;
|
|
||||||
var method = document.getElementById('method').value;
|
|
||||||
var url = document.getElementById('url').value;
|
|
||||||
|
|
||||||
document.getElementById('response_headers').textContent = null;
|
|
||||||
document.getElementById('response_body').textContent = null;
|
|
||||||
|
|
||||||
var request = new XMLHttpRequest();
|
|
||||||
|
|
||||||
request.onreadystatechange = function (oEvent) {
|
|
||||||
if (request.readyState == 4) {
|
|
||||||
responseHeaders = 'Status: ' + request.status;
|
|
||||||
responseHeaders = responseHeaders + '\nStatus Text: ' + request.statusText;
|
|
||||||
responseHeaders = responseHeaders + '\n\n' + request.getAllResponseHeaders();
|
|
||||||
document.getElementById('response_headers').textContent = responseHeaders;
|
|
||||||
document.getElementById('response_body').textContent = request.responseText;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
request.open(method, url);
|
|
||||||
if (token != '') {
|
|
||||||
// custom headers always trigger a pre-flight request
|
|
||||||
request.setRequestHeader('X-Auth-Token', token);
|
|
||||||
}
|
|
||||||
request.send(null);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
.. _CORS: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
|
.. _CORS: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
|
||||||
.. _preflight request: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS#Preflighted_requests
|
.. _preflight request: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS#Preflighted_requests
|
||||||
|
60
doc/source/test-cors.html
Normal file
60
doc/source/test-cors.html
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Test CORS</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
Token<br><input id="token" type="text" size="64"><br><br>
|
||||||
|
|
||||||
|
Method<br>
|
||||||
|
<select id="method">
|
||||||
|
<option value="GET">GET</option>
|
||||||
|
<option value="HEAD">HEAD</option>
|
||||||
|
<option value="POST">POST</option>
|
||||||
|
<option value="DELETE">DELETE</option>
|
||||||
|
<option value="PUT">PUT</option>
|
||||||
|
</select><br><br>
|
||||||
|
|
||||||
|
URL (Container or Object)<br><input id="url" size="64" type="text"><br><br>
|
||||||
|
|
||||||
|
<input id="submit" type="button" value="Submit" onclick="submit(); return false;">
|
||||||
|
|
||||||
|
<pre id="response_headers"></pre>
|
||||||
|
<p>
|
||||||
|
<hr>
|
||||||
|
<pre id="response_body"></pre>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function submit() {
|
||||||
|
var token = document.getElementById('token').value;
|
||||||
|
var method = document.getElementById('method').value;
|
||||||
|
var url = document.getElementById('url').value;
|
||||||
|
|
||||||
|
document.getElementById('response_headers').textContent = null;
|
||||||
|
document.getElementById('response_body').textContent = null;
|
||||||
|
|
||||||
|
var request = new XMLHttpRequest();
|
||||||
|
|
||||||
|
request.onreadystatechange = function (oEvent) {
|
||||||
|
if (request.readyState == 4) {
|
||||||
|
responseHeaders = 'Status: ' + request.status;
|
||||||
|
responseHeaders = responseHeaders + '\nStatus Text: ' + request.statusText;
|
||||||
|
responseHeaders = responseHeaders + '\n\n' + request.getAllResponseHeaders();
|
||||||
|
document.getElementById('response_headers').textContent = responseHeaders;
|
||||||
|
document.getElementById('response_body').textContent = request.responseText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
request.open(method, url);
|
||||||
|
if (token != '') {
|
||||||
|
// custom headers always trigger a pre-flight request
|
||||||
|
request.setRequestHeader('X-Auth-Token', token);
|
||||||
|
}
|
||||||
|
request.send(null);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user