diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-07-08 02:16:42 +1000 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-07-08 02:23:23 +1000 |
| commit | 2508c7cf38ed412bdffffd74b31d003651571187 (patch) | |
| tree | ab27930fc6fc9542710e1391332c3e1c2d6d7737 | |
| parent | ef4a9b9223d6019f0b782eb2f944f3cfe2b6ed41 (diff) | |
Add basic conversion to POST requeststest-post-reqs
Using fetch() sent a CORS preflight request, which python's basic server
couldn't understand. Using fetch()'s 'no-cors' option seems to just fail.
Ended up using Vite's proxy functionality again.
CGI script also got unexpected empty command line argument.
| -rwxr-xr-x | backend/cgi-bin/data.py | 13 | ||||
| -rw-r--r-- | src/lib.ts | 13 | ||||
| -rw-r--r-- | vite.config.js | 3 |
3 files changed, 22 insertions, 7 deletions
diff --git a/backend/cgi-bin/data.py b/backend/cgi-bin/data.py index 3579a18..3376972 100755 --- a/backend/cgi-bin/data.py +++ b/backend/cgi-bin/data.py @@ -29,9 +29,10 @@ Query parameters: weakly-trimmed, images-only, and picked-nodes trees. The default is 'images'. """ -if len(sys.argv) > 1: - print(usageInfo, file=sys.stderr) - sys.exit(1) +#if len(sys.argv) > 1: +# print(sys.argv, file=sys.stderr) +# print(usageInfo, file=sys.stderr) +# sys.exit(1) # Classes for objects sent as responses (matches lib.ts types in client-side code) class TolNode: @@ -236,8 +237,12 @@ def respondJson(val): sys.stdout.flush() sys.stdout.buffer.write(content) def handleReq(dbCur): + content_len = int(os.environ["CONTENT_LENGTH"]) + data = sys.stdin.read(content_len) + queryStr = jsonpickle.decode(data)["params"] + print(queryStr, file=sys.stderr) # Get query params - queryStr = os.environ["QUERY_STRING"] if "QUERY_STRING" in os.environ else "" + #queryStr = os.environ["QUERY_STRING"] if "QUERY_STRING" in os.environ else "" queryDict = urllib.parse.parse_qs(queryStr) # Set vars from params name = queryDict["name"][0] if "name" in queryDict else None @@ -7,15 +7,22 @@ import {LayoutOptions} from './layout'; import {getBreakpoint, Breakpoint, getScrollBarWidth, onTouchDevice} from './util'; // For server requests -const SERVER_URL = 'http://localhost:8000/cgi-bin/data.py' +const SERVER_URL = 'http://localhost:3000/cgi-bin/data.py' export async function queryServer(params: URLSearchParams){ // Construct URL let url = new URL(SERVER_URL); - url.search = params.toString(); + //url.search = params.toString(); // Query server let responseObj; try { - let response = await fetch(url.toString()); + let response = await fetch(url.toString(), { + method: 'POST', + headers: { + 'Content-type': 'application/json', + }, + body: JSON.stringify({params: params.toString()}), + }); + console.log(response) responseObj = await response.json(); } catch (error){ console.log(`Error with querying ${url}: ${error}`); diff --git a/vite.config.js b/vite.config.js index f1e7552..ebcdcd3 100644 --- a/vite.config.js +++ b/vite.config.js @@ -5,6 +5,9 @@ export default defineConfig({ base: '/', plugins: [vue()], server: { + proxy: { + '/cgi-bin/data.py': 'http://localhost:8000' + }, watch: { ignored: ['**/backend', '**/public'] }, |
