Azure / static-web-apps-cli

Azure Static Web Apps CLI ✨
https://aka.ms/swa/cli-local-development
MIT License
600 stars 119 forks source link

Support query strings on static content #229

Closed irwinwilliams closed 3 years ago

irwinwilliams commented 3 years ago

Hi there, A really simple test I did was to just stuff query string parameters on to html pages as I make requests and I'm realizing that this leads to 404 errors. Can you confirm if no-query-string support is a feature or a bug?

anthonychu commented 3 years ago

I’m unable to reproduce this. Can you please provide more details?

irwinwilliams commented 3 years ago

Sure, I noticed afterward that it worked on the .azurestaticwebsites.net site, but not in my local dev env. Here's a request handling it fine: image Same request with a query string: image

anthonychu commented 3 years ago

Thanks. We’ll transfer this issue to the CLI repo and address is there.

anthonychu commented 3 years ago

Ignore query string when serving static content. (Dev server and API calls should proxy the http request as-is, including query string)

Also need to print a disclaimer that the CLI is an emulator and might not match the cloud environment 100%. Will create a separate issue to track.

manekinekko commented 3 years ago

@anthonychu It looks like we already ignore query string when serving static content (and our e2e tests are passing). We will probably need more details on how to reproduce this issue.

@rwinwilliams are you able to share your app so I can try it locally? Or, can you run the SWA CLI using the --verbose=silly and copy/paste the logs of the request that leads to the 404 page? Thank you.

FYI, the debugging logs might look like the following:

debug logs using --verbose=silly ``` [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /folder/index.html?query=value [swa] checking for matching route [swa] check if request match route [swa] - route: /redirect/301 [swa] - wildcard: false [swa] - alternateRequestPath: /folder/index.html [swa] check if request match route [swa] - route: /redirect/302 [swa] - wildcard: false [swa] - alternateRequestPath: /folder/index.html [swa] check if request match route [swa] - route: /redirect/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /redirect/* [swa] - pathBeforeWildcard: /redirect/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /redirect/* [swa] - pathBeforeWildcard: /redirect/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /*.google [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /*.google [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.google [swa] - regexp: /^\/.*google$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /*.google [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.google [swa] - regexp: /^\/.*google$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: /*.{jpg} [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /*.{jpg} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{jpg} [swa] - regexp: /^\/.*(jpg)$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /*.{jpg} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{jpg} [swa] - regexp: /^\/.*(jpg)$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: *.foo [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: *.foo [swa] - pathBeforeWildcard: [swa] turning glob expression into valid RegExp [swa] - glob: *.foo [swa] - regexp: /^.*foo$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: *.foo [swa] - pathBeforeWildcard: [swa] turning glob expression into valid RegExp [swa] - glob: *.foo [swa] - regexp: /^.*foo$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: /*.{png,gif} [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /*.{png,gif} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{png,gif} [swa] - regexp: /^\/.*(png|gif)$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /*.{png,gif} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{png,gif} [swa] - regexp: /^\/.*(png|gif)$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: /folder/*.{html,xml} [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /folder/*.{html,xml} [swa] - pathBeforeWildcard: /folder/ [swa] turning glob expression into valid RegExp [swa] - glob: /folder/*.{html,xml} [swa] - regexp: /^\/folder\/.*(html|xml)$/ [swa] - isMatch: true [swa] - doesRequestPathMatchWildcardRoute: true [swa] - matchingRouteRule: [swa] - route: /folder/*.{html,xml} [swa] - rewrite: /folder/ [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - shouldCheckRoles: false [swa] - shouldLookupAuthCookie: false [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /redirect/301 [swa] - redirect: /index2.html [swa] - statusCode: 301 [swa] - 1: [swa] - route: /redirect/302 [swa] - redirect: /index2.html [swa] - statusCode: 302 [swa] - 2: [swa] - route: /redirect/* [swa] - redirect: /index2.html [swa] - 3: [swa] - route: /*.google [swa] - redirect: https://www.google.com/ [swa] - 4: [swa] - route: /*.{jpg} [swa] - redirect: /jpg.html [swa] - 5: [swa] - route: *.foo [swa] - redirect: /foo.html [swa] - 6: [swa] - route: /*.{png,gif} [swa] - redirect: /png_gif.html [swa] - 7: [swa] - route: /folder/*.{html,xml} [swa] - rewrite: /folder/ [swa] - 8: [swa] - route: /rewrite_index2 [swa] - rewrite: /index2.html [swa] - headers: [swa] - a: c [swa] - foo: bar [swa] - 9: [swa] - route: /rewrite-to-function [swa] - rewrite: /api/headers [swa] - 10: [swa] - route: /login-github [swa] - rewrite: /.auth/login/github [swa] - 11: [swa] - route: /logout [swa] - rewrite: /.auth/logout [swa] - 12: [swa] - route: /status-code-401.txt [swa] - statusCode: 401 [swa] - 13: [swa] - route: /status-code-403.txt [swa] - statusCode: 403 [swa] - 14: [swa] - route: /status-code-404.txt [swa] - statusCode: 404 [swa] - 15: [swa] - route: /only-authenticated [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 16: [swa] - route: /api/info [swa] - allowedRoles: [swa] - 0: authenticated [swa] - navigationFallback: [swa] - rewrite: /index.html [swa] - exclude: [swa] - 0: *.{txt} [swa] - responseOverrides: [swa] - 401: [swa] - rewrite: /custom-401.html [swa] - 403: [swa] - rewrite: /custom-403.html [swa] - 404: [swa] - rewrite: /custom-404.html [swa] - mimeTypes: [swa] - .swaconfig: application/json [swa] - globalHeaders: [swa] - a: b [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /folder/index.html [swa] - filePath: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static/folder/index.html [swa] - exists: true [swa] - filePathFromRequest: /folder/index.html [swa] checking mime types [swa] - extension: .html [swa] - found: text/html [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - a: b [swa] checking global headers [swa] - Strict-Transport-Security: max-age=10886400; includeSubDomains; preload [swa] - Referrer-Policy: same-origin [swa] - X-Content-Type-Options: nosniff [swa] - X-XSS-Protection: 1; mode=block [swa] - X-DNS-Prefetch-Control: off [swa] - Cache-Control: must-revalidate, max-age=30 [swa] - ETag: "SWA-CLI-ETAG" [swa] - url: /folder/index.html [swa] - target: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static [swa] customUrl: false [swa] custom page or index.html detected [swa] - url: /folder/index.html [swa] - statusCode: 200 [swa] - target: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static/folder/index.html [swa] - exists: true [swa] serving static content [swa] - file: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static/folder/index.html [swa] - url: /folder/index.html [swa] - code: 200 ```
irwinwilliams commented 3 years ago

@anthonychu It looks like we already ignore query string when serving static content (and our e2e tests are passing). We will probably need more details on how to reproduce this issue.

@rwinwilliams are you able to share your app so I can try it locally? Or, can you run the SWA CLI using the --verbose=silly and copy/paste the logs of the request that leads to the 404 page? Thank you.

FYI, the debugging logs might look like the following:

debug logs using --verbose=silly

Hey @manekinekko, here's the output when --verbose=silly is on:

Click to expand... ``` Detected runtime: [object Object] [swa] - config: [swa] - appBuildCommand: npm run build --if-present [swa] - apiBuildCommand: npm run build --if-present [swa] - appLocation: C:\Development\del\TestSWA\ [swa] - apiLocation: C:\Development\del\TestSWA\api [swa] - outputLocation: C:\Development\del\TestSWA [swa] - files: [swa] - 0: C:\Development\del\TestSWA\.github\workflows\azure-static-web-apps-white-glacier-094809c10.yml [swa] - ssl: [swa] - 0: false [swa] - 1: [swa] - 2: [swa] - env: [swa] - SWA_CLI_DEBUG: silly [swa] - SWA_CLI_API_PORT: 7071 [swa] - SWA_CLI_APP_LOCATION: C:\Development\del\TestSWA\ [swa] - SWA_CLI_OUTPUT_LOCATION: C:\Development\del\TestSWA [swa] - SWA_CLI_API_LOCATION: C:\Development\del\TestSWA\api [swa] - SWA_CLI_ROUTES_LOCATION: .\ [swa] - SWA_CLI_HOST: 0.0.0.0 [swa] - SWA_CLI_PORT: 4280 [swa] - SWA_WORKFLOW_FILES: C:\Development\del\TestSWA\.github\workflows\azure-static-web-apps-white-glacier-094809c10.yml [swa] - SWA_CLI_APP_SSL: false [swa] - SWA_CLI_APP_SSL_CERT: [swa] - SWA_CLI_APP_SSL_KEY: [swa] - SWA_CLI_STARTUP_COMMAND: [swa] - commands: [swa] - swa: node "C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\proxy\server.js" [swa] - api: cd "C:\Development\del\TestSWA\api" && func start --cors "*" --port 7071 [swa] - run: [api] Microsoft (R) Build Engine version 16.9.0+57a23d249 for .NET [api] Copyright (C) Microsoft Corporation. All rights reserved. [api] [swa] [swa] Found configuration file: [swa] C:\Development\del\TestSWA\app\staticwebapp.config.json [swa] - Waiting for http://0.0.0.0:7071 to be ready... [api] Determining projects to restore... [api] All projects are up-to-date for restore. [swa] Mon, 07 Jun 2021 01:49:37 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [api] data-layer -> C:\Development\del\TestSWA\api\bin\output\data-layer.dll [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [api] api -> C:\Development\del\TestSWA\api\bin\output\api.dll [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:38 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:39 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [api] [api] Build succeeded. [api] 0 Warning(s) 0 Error(s) [api] [api] Time Elapsed 00:00:03.91 [api] [api] [api] [api] Azure Functions Core Tools [api] Core Tools Version: 3.0.3388 Commit hash: fb42a4e0b7fdc85fbd0bcfc8d743ff7d509122ae [api] Function Runtime Version: 3.0.15371.0 [api] [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [api] [2021-06-07T01:49:40.737Z] Found C:\Development\del\TestSWA\api\api.csproj. Using for user secrets file configuration. [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:40 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [api] [api] Functions: [api] message: [GET,POST] http://localhost:7071/api/message [api] organization-create: [POST] http://localhost:7071/api/organization-create [api] organization-list: [GET] http://localhost:7071/api/organization-list [api] project: [POST] http://localhost:7071/api/project [api] [api] RenderOAuth2Redirect: [GET] http://localhost:7071/api/oauth2-redirect.html [api] RenderOpenApiDocument: [GET] http://localhost:7071/api/openapi/{version}.{extension} [api] RenderSwaggerDocument: [GET] http://localhost:7071/api/swagger.{extension} [api] [api] RenderSwaggerUI: [GET] http://localhost:7071/api/swagger/ui [api] [api] For detailed output, run func with --verbose flag. [swa] Mon, 07 Jun 2021 01:49:41 GMT follow-redirects options { [swa] maxRedirects: 21, [swa] maxBodyLength: 10485760, [swa] protocol: 'http:', [swa] path: '/', [swa] method: 'HEAD', [swa] headers: { [swa] Accept: 'application/json, text/plain, */*', [swa] 'User-Agent': 'axios/0.21.1' [swa] }, [swa] agent: undefined, [swa] agents: { [swa] http: undefined, [swa] https: Agent { [swa] _events: [Object: null prototype], [swa] _eventsCount: 2, [swa] _maxListeners: undefined, [swa] defaultPort: 443, [swa] protocol: 'https:', [swa] options: [Object], [swa] requests: {}, [swa] sockets: {}, [swa] freeSockets: {}, [swa] keepAliveMsecs: 1000, [swa] keepAlive: false, [swa] maxSockets: Infinity, [swa] maxFreeSockets: 256, [swa] scheduling: 'fifo', [swa] maxTotalSockets: Infinity, [swa] totalSocketCount: 0, [swa] maxCachedSessions: 100, [swa] _sessionCache: [Object], [swa] [Symbol(kCapture)]: false [swa] } [swa] }, [swa] auth: undefined, [swa] hostname: '0.0.0.0', [swa] port: '7071', [swa] nativeProtocols: { [swa] 'http:': { [swa] _connectionListener: [Function: connectionListener], [swa] METHODS: [Array], [swa] STATUS_CODES: [Object], [swa] Agent: [Function], [swa] ClientRequest: [Function: ClientRequest], [swa] IncomingMessage: [Function: IncomingMessage], [swa] OutgoingMessage: [Function: OutgoingMessage], [swa] Server: [Function: Server], [swa] ServerResponse: [Function: ServerResponse], [swa] createServer: [Function: createServer], [swa] validateHeaderName: [Function: hidden], [swa] validateHeaderValue: [Function: hidden], [swa] get: [Function: get], [swa] request: [Function: request], [swa] maxHeaderSize: [Getter], [swa] globalAgent: [Getter/Setter] [swa] }, [swa] 'https:': { [swa] Agent: [Function: Agent], [swa] globalAgent: [Agent], [swa] Server: [Function: Server], [swa] createServer: [Function: createServer], [swa] get: [Function: get], [swa] request: [Function: request] [swa] } [swa] } [swa] } [swa] Γ£ö Connected to http://0.0.0.0:7071 successfully. [swa] [swa] Serving static content: [swa] C:\Development\del\TestSWA [swa] [swa] Serving API: [swa] C:\Development\del\TestSWA\api [swa] [swa] Available on: [swa] http://192.168.100.192:4280 [swa] http://0.0.0.0:4280 [swa] [swa] Azure Static Web Apps emulator started. Press CTRL+C to exit. [swa] [swa] [api] [2021-06-07T01:49:46.748Z] Host lock lease acquired by instance ID '0000000000000000000000002B9C2C01'. [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\project\ [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/project/ [swa] Mon, 07 Jun 2021 01:50:35 GMT send stat "C:\Development\del\TestSWA\app\project\index.html" [swa] GET http://192.168.100.192:4280/app/project/ - 200 [swa] Mon, 07 Jun 2021 01:50:35 GMT send pipe "C:\Development\del\TestSWA\app\project\index.html" [swa] Mon, 07 Jun 2021 01:50:35 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:35 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:35 GMT send modified Sun, 06 Jun 2021 01:44:41 GMT [swa] Mon, 07 Jun 2021 01:50:35 GMT send etag W/"1322-179defe5955" [swa] Mon, 07 Jun 2021 01:50:35 GMT send content-type text/html [swa] Mon, 07 Jun 2021 01:50:35 GMT send not modified [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\styles.css [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/styles.css [swa] Mon, 07 Jun 2021 01:50:35 GMT send stat "C:\Development\del\TestSWA\app\styles.css" [swa] GET http://192.168.100.192:4280/app/styles.css - 200 [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\scripts\elements.js [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/scripts/elements.js [swa] Mon, 07 Jun 2021 01:50:35 GMT send stat "C:\Development\del\TestSWA\app\scripts\elements.js" [swa] GET http://192.168.100.192:4280/app/scripts/elements.js - 200 [swa] Mon, 07 Jun 2021 01:50:35 GMT send pipe "C:\Development\del\TestSWA\app\styles.css" [swa] Mon, 07 Jun 2021 01:50:35 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:35 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:35 GMT send modified Sun, 06 Jun 2021 01:43:48 GMT [swa] Mon, 07 Jun 2021 01:50:35 GMT send etag W/"4b5-179defd8827" [swa] Mon, 07 Jun 2021 01:50:35 GMT send content-type text/css [swa] Mon, 07 Jun 2021 01:50:35 GMT send not modified [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\scripts\organization.js [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/scripts/organization.js [swa] Mon, 07 Jun 2021 01:50:35 GMT send stat "C:\Development\del\TestSWA\app\scripts\organization.js" [swa] GET http://192.168.100.192:4280/app/scripts/organization.js - 200 [swa] Mon, 07 Jun 2021 01:50:35 GMT send pipe "C:\Development\del\TestSWA\app\scripts\elements.js" [swa] Mon, 07 Jun 2021 01:50:35 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:35 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:35 GMT send modified Sat, 05 Jun 2021 20:11:04 GMT [swa] Mon, 07 Jun 2021 01:50:35 GMT send etag W/"acc-179ddcce7eb" [swa] Mon, 07 Jun 2021 01:50:35 GMT send content-type application/javascript [swa] Mon, 07 Jun 2021 01:50:35 GMT send not modified [swa] Mon, 07 Jun 2021 01:50:35 GMT send pipe "C:\Development\del\TestSWA\app\scripts\organization.js" [swa] Mon, 07 Jun 2021 01:50:35 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:35 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:35 GMT send modified Sun, 06 Jun 2021 02:55:02 GMT [swa] Mon, 07 Jun 2021 01:50:35 GMT send etag W/"99e-179df3ec059" [swa] Mon, 07 Jun 2021 01:50:35 GMT send content-type application/javascript [swa] Mon, 07 Jun 2021 01:50:35 GMT send not modified [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\img\noun_company_3382173.png [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/img/noun_company_3382173.png [swa] Mon, 07 Jun 2021 01:50:35 GMT send stat "C:\Development\del\TestSWA\app\img\noun_company_3382173.png" [swa] GET http://192.168.100.192:4280/app/img/noun_company_3382173.png - 200 [swa] Mon, 07 Jun 2021 01:50:35 GMT send pipe "C:\Development\del\TestSWA\app\img\noun_company_3382173.png" [swa] Mon, 07 Jun 2021 01:50:35 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:35 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:35 GMT send modified Thu, 03 Jun 2021 17:23:37 GMT [swa] Mon, 07 Jun 2021 01:50:35 GMT send etag W/"6d41-179d2e6e3bd" [swa] Mon, 07 Jun 2021 01:50:35 GMT send content-type image/png [swa] Mon, 07 Jun 2021 01:50:35 GMT send not modified [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\api\organization-list?id=1 [swa] - isFileFound: false [swa] - statusCode: 200 [swa] - url: /api/organization-list?id=1 [swa] GET http://192.168.100.192:4280/api/organization-list?id=1 (proxy) [api] [2021-06-07T01:50:35.949Z] Executing 'organization-list' (Reason='This function was programmatically called via the host APIs.', Id=3675e82a-dfa9-4f0a-8e9c-9c396d5897fc) [api] [2021-06-07T01:50:35.962Z] C# HTTP trigger function processed a request. [api] [2021-06-07T01:50:37.805Z] Executed 'organization-list' (Succeeded, Id=3675e82a-dfa9-4f0a-8e9c-9c396d5897fc, Duration=1873ms) [swa] GET http://192.168.100.192:4280/api/organization-list?id=1 - 200 [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\ [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/ [swa] Mon, 07 Jun 2021 01:50:42 GMT send stat "C:\Development\del\TestSWA\app\index.html" [swa] GET http://192.168.100.192:4280/app/ - 200 [swa] Mon, 07 Jun 2021 01:50:42 GMT send pipe "C:\Development\del\TestSWA\app\index.html" [swa] Mon, 07 Jun 2021 01:50:42 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:42 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:42 GMT send modified Thu, 03 Jun 2021 17:17:29 GMT [swa] Mon, 07 Jun 2021 01:50:42 GMT send etag W/"1100-179d2e14622" [swa] Mon, 07 Jun 2021 01:50:42 GMT send content-type text/html [swa] Mon, 07 Jun 2021 01:50:42 GMT send not modified [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\img\services-bkgd.png [swa] - isFileFound: true [swa] - statusCode: 200 [swa] - url: /app/img/services-bkgd.png [swa] Mon, 07 Jun 2021 01:50:42 GMT send stat "C:\Development\del\TestSWA\app\img\services-bkgd.png" [swa] GET http://192.168.100.192:4280/app/img/services-bkgd.png - 200 [swa] Mon, 07 Jun 2021 01:50:42 GMT send pipe "C:\Development\del\TestSWA\app\img\services-bkgd.png" [swa] Mon, 07 Jun 2021 01:50:42 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:50:42 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:50:42 GMT send modified Thu, 03 Jun 2021 14:32:50 GMT [swa] Mon, 07 Jun 2021 01:50:42 GMT send etag W/"84b49-179d24a8992" [swa] Mon, 07 Jun 2021 01:50:42 GMT send content-type image/png [swa] Mon, 07 Jun 2021 01:50:42 GMT send not modified [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\api\message [swa] - isFileFound: false [swa] - statusCode: 200 [swa] - url: /api/message [swa] GET http://192.168.100.192:4280/api/message (proxy) [api] [2021-06-07T01:50:42.899Z] Executing 'message' (Reason='This function was programmatically called via the host APIs.', Id=5e7275d4-77f4-4a04-95dd-3da34c189a94) [api] [2021-06-07T01:50:42.907Z] C# HTTP trigger function processed a request. [api] [2021-06-07T01:50:42.995Z] Executed 'message' (Succeeded, Id=5e7275d4-77f4-4a04-95dd-3da34c189a94, Duration=99ms) [swa] GET http://192.168.100.192:4280/api/message - 200 [swa] checking globalHeaders rule... [swa] - outputLocation: C:\Development\del\TestSWA [swa] - matchedRoute: [swa] - filepath: C:\Development\del\TestSWA\app\?test=1 [swa] - isFileFound: false [swa] - statusCode: 200 [swa] - url: /app/?test=1 [swa] Mon, 07 Jun 2021 01:51:56 GMT send stat "C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\public\404.html" [swa] GET http://192.168.100.192:4280/404.html - 404 [swa] Mon, 07 Jun 2021 01:51:56 GMT send pipe "C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\public\404.html" [swa] Mon, 07 Jun 2021 01:51:56 GMT send accept ranges [swa] Mon, 07 Jun 2021 01:51:56 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 01:51:56 GMT send modified Sat, 26 Oct 1985 08:15:00 GMT [swa] Mon, 07 Jun 2021 01:51:56 GMT send etag W/"d97-7438674ba0" [swa] Mon, 07 Jun 2021 01:51:56 GMT send content-type text/html [swa] Azure Static Web Apps emulator shutting down... ```
anthonychu commented 3 years ago

@irwinwilliams I can't seem to reproduce this either. Looking at the log messages, it looks like this might be an older version of the CLI. Can you check the version of the CLI? Ensure you're running 0.6.0.

swa --version
irwinwilliams commented 3 years ago

My swa --version output was 0.4.0. So I ran, "npm install -g @azure/static-web-apps-cli" Got it up to 0.6.0. Same issue. Restarted vscode. No change. Going off to restart. Edit: after restart, still no joy.

If you look at the logs below, you'll see this:

[swa] checking storage content
[swa] finding file for request
[swa]  - requestPath: /app/project/?test=1/index.html
[swa]  - filePath: C:\Development\del\[TestApp]\app\project\?test=1\index.html
[swa]  - exists: false

Which suggests the server is making the query string a part of the file search.

Here's the log output:

``` Detected runtime: [object Object] [swa] - config: [swa] - appBuildCommand: npm run build --if-present [swa] - apiBuildCommand: npm run build --if-present [swa] - appLocation: C:\Development\del\[TestApp]\ [swa] - apiLocation: [swa] - outputLocation: C:\Development\del\[TestApp] [swa] - files: [swa] - 0: C:\Development\del\[TestApp]\.github\workflows\azure-static-web-apps-white-glacier-094809c10.yml [swa] - ssl: [swa] - 0: false [swa] - 1: [swa] - 2: [swa] - env: [swa] - SWA_CLI_DEBUG: silly [swa] - SWA_CLI_API_PORT: 7071 [swa] - SWA_CLI_APP_LOCATION: C:\Development\del\[TestApp]\ [swa] - SWA_CLI_OUTPUT_LOCATION: C:\Development\del\[TestApp] [swa] - SWA_CLI_API_LOCATION: [swa] - SWA_CLI_ROUTES_LOCATION: .\ [swa] - SWA_CLI_HOST: 0.0.0.0 [swa] - SWA_CLI_PORT: 4280 [swa] - SWA_WORKFLOW_FILES: C:\Development\del\[TestApp]\.github\workflows\azure-static-web-apps-white-glacier-094809c10.yml [swa] - SWA_CLI_APP_SSL: false [swa] - SWA_CLI_APP_SSL_CERT: [swa] - SWA_CLI_APP_SSL_KEY: [swa] - SWA_CLI_STARTUP_COMMAND: [swa] - commands: [swa] - swa: node "C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\msha\server.js" [swa] - api: [swa] - run: [swa] [swa] Found configuration file: [swa] C:\Development\del\[TestApp]\app\staticwebapp.config.json [swa] [swa] Serving static content: [swa] C:\Development\del\[TestApp] [swa] [swa] Available on: [swa] http://0.0.0.0:4280 [swa] http://192.168.100.192:4280 [swa] [swa] Azure Static Web Apps emulator started. Press CTRL+C to exit. [swa] [swa] [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /app/project/ [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/project/index.html [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/project/index.html [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /app/project/index.html [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /app/project/index.html [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /app/project/index.html [swa] - filePath: C:\Development\del\[TestApp]\app\project\index.html [swa] - exists: true [swa] - filePathFromRequest: /app/project/index.html [swa] checking mime types [swa] - extension: .html [swa] - found: text/html [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - url: /app/project/index.html [swa] - target: C:\Development\del\[TestApp] [swa] customUrl: false [swa] custom page or index.html detected [swa] - url: /app/project/index.html [swa] - statusCode: 200 [swa] - target: C:\Development\del\[TestApp] [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: C:\Development\del\[TestApp]\app\project\index.html [swa] - exists: true [swa] serving static content [swa] - file: C:\Development\del\[TestApp]\app\project\index.html [swa] - url: /app/project/index.html [swa] - code: 200 [swa] Mon, 07 Jun 2021 12:59:20 GMT send stat "C:\Development\del\[TestApp]\app\project\index.html" [swa] Mon, 07 Jun 2021 12:59:20 GMT send pipe "C:\Development\del\[TestApp]\app\project\index.html" [swa] Mon, 07 Jun 2021 12:59:20 GMT send accept ranges [swa] Mon, 07 Jun 2021 12:59:20 GMT send modified Sun, 06 Jun 2021 01:44:41 GMT [swa] Mon, 07 Jun 2021 12:59:20 GMT send not modified [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /app/styles.css [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/styles.css [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/styles.css [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /app/styles.css [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /app/styles.css [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /app/styles.css [swa] - filePath: C:\Development\del\[TestApp]\app\styles.css [swa] - exists: true [swa] - filePathFromRequest: /app/styles.css [swa] checking mime types [swa] - extension: .css [swa] - found: text/css [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - url: /app/styles.css [swa] - target: C:\Development\del\[TestApp] [swa] customUrl: false [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: C:\Development\del\[TestApp]\app\styles.css [swa] - exists: true [swa] serving static content [swa] - file: C:\Development\del\[TestApp]\app\styles.css [swa] - url: /app/styles.css [swa] - code: 200 [swa] Mon, 07 Jun 2021 12:59:20 GMT send stat "C:\Development\del\[TestApp]\app\styles.css" [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /app/img/noun_company_3382173.png [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/img/noun_company_3382173.png [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/img/noun_company_3382173.png [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /app/img/noun_company_3382173.png [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /app/img/noun_company_3382173.png [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /app/img/noun_company_3382173.png [swa] - filePath: C:\Development\del\[TestApp]\app\img\noun_company_3382173.png [swa] - exists: true [swa] - filePathFromRequest: /app/img/noun_company_3382173.png [swa] checking mime types [swa] - extension: .png [swa] - found: image/png [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - url: /app/img/noun_company_3382173.png [swa] - target: C:\Development\del\[TestApp] [swa] customUrl: false [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: C:\Development\del\[TestApp]\app\img\noun_company_3382173.png [swa] - exists: true [swa] serving static content [swa] - file: C:\Development\del\[TestApp]\app\img\noun_company_3382173.png [swa] - url: /app/img/noun_company_3382173.png [swa] - code: 200 [swa] Mon, 07 Jun 2021 12:59:20 GMT send stat "C:\Development\del\[TestApp]\app\img\noun_company_3382173.png" [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /app/scripts/elements.js [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/scripts/elements.js [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/scripts/elements.js [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /app/scripts/elements.js [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /app/scripts/elements.js [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /app/scripts/elements.js [swa] - filePath: C:\Development\del\[TestApp]\app\scripts\elements.js [swa] - exists: true [swa] - filePathFromRequest: /app/scripts/elements.js [swa] checking mime types [swa] - extension: .js [swa] - found: text/javascript [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - url: /app/scripts/elements.js [swa] - target: C:\Development\del\[TestApp] [swa] customUrl: false [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: C:\Development\del\[TestApp]\app\scripts\elements.js [swa] - exists: true [swa] serving static content [swa] - file: C:\Development\del\[TestApp]\app\scripts\elements.js [swa] - url: /app/scripts/elements.js [swa] - code: 200 [swa] Mon, 07 Jun 2021 12:59:20 GMT send stat "C:\Development\del\[TestApp]\app\scripts\elements.js" [swa] Mon, 07 Jun 2021 12:59:20 GMT send pipe "C:\Development\del\[TestApp]\app\styles.css" [swa] Mon, 07 Jun 2021 12:59:20 GMT send accept ranges [swa] Mon, 07 Jun 2021 12:59:20 GMT send modified Sun, 06 Jun 2021 01:43:48 GMT [swa] Mon, 07 Jun 2021 12:59:20 GMT send not modified [swa] Mon, 07 Jun 2021 12:59:20 GMT send pipe "C:\Development\del\[TestApp]\app\img\noun_company_3382173.png" [swa] Mon, 07 Jun 2021 12:59:20 GMT send accept ranges [swa] Mon, 07 Jun 2021 12:59:20 GMT send modified Thu, 03 Jun 2021 17:23:37 GMT [swa] Mon, 07 Jun 2021 12:59:20 GMT send not modified [swa] Mon, 07 Jun 2021 12:59:20 GMT send pipe "C:\Development\del\[TestApp]\app\scripts\elements.js" [swa] Mon, 07 Jun 2021 12:59:20 GMT send accept ranges [swa] Mon, 07 Jun 2021 12:59:20 GMT send modified Sat, 05 Jun 2021 20:11:04 GMT [swa] Mon, 07 Jun 2021 12:59:20 GMT send not modified [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /app/scripts/organization.js [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/scripts/organization.js [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/scripts/organization.js [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /app/scripts/organization.js [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /app/scripts/organization.js [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /app/scripts/organization.js [swa] - filePath: C:\Development\del\[TestApp]\app\scripts\organization.js [swa] - exists: true [swa] - filePathFromRequest: /app/scripts/organization.js [swa] checking mime types [swa] - extension: .js [swa] - found: text/javascript [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - url: /app/scripts/organization.js [swa] - target: C:\Development\del\[TestApp] [swa] customUrl: false [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: C:\Development\del\[TestApp]\app\scripts\organization.js [swa] - exists: true [swa] serving static content [swa] - file: C:\Development\del\[TestApp]\app\scripts\organization.js [swa] - url: /app/scripts/organization.js [swa] - code: 200 [swa] Mon, 07 Jun 2021 12:59:20 GMT send stat "C:\Development\del\[TestApp]\app\scripts\organization.js" [swa] Mon, 07 Jun 2021 12:59:20 GMT send pipe "C:\Development\del\[TestApp]\app\scripts\organization.js" [swa] Mon, 07 Jun 2021 12:59:20 GMT send accept ranges [swa] Mon, 07 Jun 2021 12:59:20 GMT send modified Sun, 06 Jun 2021 02:55:02 GMT [swa] Mon, 07 Jun 2021 12:59:20 GMT send not modified [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /api/organization-list?id=1 [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /api/organization-list/index.html [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /api/organization-list/index.html [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /api/organization-list/index.html [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /api/organization-list/index.html [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] checking HTTP method: GET [swa] - function or auth request detected, method is valid [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] *************************************************************************** [swa] ** Functions request detected but no endpoint configuration was found. ** [swa] ** Please use the --api option to configure a function endpoint. ** [swa] *************************************************************************** [swa] GET http://0.0.0.0:7071/api/organization-list?id=1 (proxy) [swa] injecting headers to Functions request: [swa] - x-ms-original-url: http://0.0.0.0:7071/api/organization-list?id=1 [swa] - x-ms-request-id: SWA-CLI-XVRMF0VSO28 [swa] injecting client principal to Functions request: [swa] decoding cookie [swa] - StaticWebAppsAuthCookie: {"userId":"6a8225497af4923d06c579b6db73225e","userRoles":["anonymous","authenticated"],"identityProvider":"b2c","userDetails":"test"} [swa] - X-MS-CLIENT-PRINCIPAL: eyJ1c2VySWQiOiI2YTgyMjU0OTdhZjQ5MjNkMDZjNTc5YjZkYjczMjI1ZSIsInVzZXJSb2xlcyI6WyJhbm9ueW1vdXMiLCJhdXRoZW50aWNhdGVkIl0sImlkZW50aXR5UHJvdmlkZXIiOiJiMmMiLCJ1c2VyRGV0YWlscyI6InRlc3QifQ== [swa] - Authorization: Bearer eyJ1c2VySWQiOiI2YTgyMjU0OTdhZjQ5MjNkMDZjNTc5YjZkYjczMjI1ZSIsInVzZXJSb2xlcyI6WyJhbm9ueW1vdXMiLCJhdXRoZW50aWNhdGVkIl0sImlkZW50aXR5UHJvdmlkZXIiOiJiMmMiLCJ1c2VyRGV0YWlscyI6InRlc3QifQ== [swa] ↳ GET http://0.0.0.0:7071/api/organization-list?id=1 - 502 (Bad Gateway) [swa] - error: [swa] - errno: -4078 [swa] - code: ECONNREFUSED [swa] - syscall: connect [swa] - address: 0.0.0.0 [swa] - port: 7071 [swa] [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /app/project/?test=1 [swa] checking for matching route [swa] check if request match route [swa] - route: /admin/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/project/index.html [swa] checking wildcard route [swa] - glob: /admin/* [swa] - pathBeforeWildcard: /admin/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /project/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /app/project/index.html [swa] checking wildcard route [swa] - glob: /project/* [swa] - pathBeforeWildcard: /project/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /login [swa] - wildcard: false [swa] - alternateRequestPath: /app/project/index.html [swa] check if request match route [swa] - route: /logout [swa] - wildcard: false [swa] - alternateRequestPath: /app/project/index.html [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - no matching rule [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /admin/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 1: [swa] - route: /project/* [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 2: [swa] - route: /login [swa] - rewrite: /.auth/login/b2c [swa] - 3: [swa] - route: /logout [swa] - redirect: /.auth/logout [swa] - auth: [swa] - identityProviders: [swa] - customOpenIdConnectProviders: [swa] - b2c: [swa] - registration: [swa] - clientIdSettingName: AppRegId [swa] - clientCredential: [swa] - clientSecretSettingName: AppRegClientSecret [swa] - openIdConnectConfiguration: [swa] - wellKnownOpenIdConfiguration: https://dev[TestApp].b2clogin.com/dev[TestApp].onmicrosoft.com/B2C_1_signup_and_signin/v2.0/.well-known/openid-configuration [swa] - login: [swa] - nameClaimType: emails [swa] - scopes: [swa] - 0: openid [swa] - platformErrorOverrides: [swa] - 0: [swa] - errorType: NotFound [swa] - serve: /custom-404.html [swa] - 1: [swa] - errorType: Unauthenticated [swa] - serve: /login [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /app/project/?test=1/index.html [swa] - filePath: C:\Development\del\[TestApp]\app\project\?test=1\index.html [swa] - exists: false [swa] - filePathFromRequest: null [swa] - shouldDisplayNotFoundPage: true [swa] GET http://192.168.100.192:4280/404.html - 404 [swa] - url: /404.html [swa] - target: C:\Development\del\[TestApp] [swa] customUrl: false [swa] is4xx: true [swa] checking if file exists in user's output location [swa] - file: C:\Development\del\[TestApp]\404.html [swa] - exists: false [swa] checking if file exists in CLI public dir [swa] - file: C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\public\404.html [swa] - exists: true [swa] serving static content [swa] - file: C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\public\404.html [swa] - url: /404.html [swa] - code: 404 [swa] Mon, 07 Jun 2021 12:59:30 GMT send stat "C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\public\404.html" [swa] Mon, 07 Jun 2021 12:59:30 GMT send pipe "C:\Users\iwilliams\AppData\Roaming\npm\node_modules\@azure\static-web-apps-cli\dist\public\404.html" [swa] Mon, 07 Jun 2021 12:59:30 GMT send accept ranges [swa] Mon, 07 Jun 2021 12:59:30 GMT send cache-control public, max-age=0 [swa] Mon, 07 Jun 2021 12:59:30 GMT send modified Sat, 26 Oct 1985 08:15:00 GMT [swa] Mon, 07 Jun 2021 12:59:30 GMT send etag W/"d97-7438674ba0" [swa] Mon, 07 Jun 2021 12:59:30 GMT send content-type text/html ```
anthonychu commented 3 years ago

Please share the app you’re testing with and repro steps.

It’s possible this is an issue on Windows. We’ll test this on a Windows machine.

irwinwilliams commented 3 years ago

It's a private repo, @anthonychu, I can add you/your team.

manekinekko commented 3 years ago

@irwinwilliams are you able to print the version of the SWA installed on your system, using the command swa -v.

Thank you.

irwinwilliams commented 3 years ago

@manekinekko, sure, it's now 0.6.0.

manekinekko commented 3 years ago

Oh! Are you still having the same issue with 0.6.0?

irwinwilliams commented 3 years ago

Hey, @manekinekko, yep.

manekinekko commented 3 years ago

Thank you @irwinwilliams !

@anthonychu I confirm I am not seeing this issue on Macos. So this might be Windows-related.

horihiro commented 3 years ago

Hello @irwinwilliams Could please confirm if there is the following navigationFallback setting in your staticwebapp.config.json? I cannot see navigationFallback setting in your log. If there isn't, please add this and try again.

  "navigationFallback": {
    "rewrite": "/index.html",
    "exclude": ["*.{txt}"]
  },

As far as I investigated, it seems that the query string for index.html cannot be handled appropriately if there is no this setting. And this setting is only for navigation to index.html. @manekinekko Do we have any way to handle query strings in any pages without the navigationFallback setting?

horihiro commented 3 years ago

By comparing between manekinekko's log and irwinwilliams' log, some different points were found.

  1. Request path

    • /folder/index.html in manekinekko's log
    • /index.html or / in irwinwilliams' log
  2. Route matching result In manekinekko's log, there are following lines.

[swa] turning glob expression into valid RegExp
[swa]  - glob: /folder/*.{html,xml}
[swa]  - regexp: /^\/folder\/.*(html|xml)$/
[swa]  - isMatch: true
[swa]  - doesRequestPathMatchWildcardRoute: true

This is caused by the following route setting. https://github.com/Azure/static-web-apps-cli/blob/34f96cd9475b38168cd4edd1ec9ade3d7b6728ea/cypress/fixtures/static/staticwebapp.config.json#L33-L36

@manekinekko Could you please confirm if this issue was reproduced after removing the route setting from your staticwebapp.config.json?

And @irwinwilliams Could you please confirm if this issue was mitigated by adding the following route setting into your staticwebapp.config.json?

  {
    "route": "/*.{html,xml}",
    "rewrite": "/"
  },

Thanks

manekinekko commented 3 years ago

Thank you so much @horihiro for taking the time to investigate this. Please note that the logs I shared are those of our E2E application and do not reflect @irwinwilliams configuration. I simply shared my logs as an example.

Also, I don't think the following rule is necessary:

{
    "route": "/*.{html,xml}",
    "rewrite": "/"
},

Because this rule will rewrite ALL *.html and *.xml (eg: /foo/bar/baz.html) requests to /index.html, which can be problematic.

@irwinwilliams are you able to share your staticwebapp.config.json if you are using one, so @horihiro and I can give investigate the issue?

manekinekko commented 3 years ago

Do we have any way to handle query strings in any pages without the navigationFallback setting?

@horihiro for static content, query params are ignored by the CLI. See: https://github.com/Azure/static-web-apps-cli/blob/0abec9309688e991400b38d21d973f68145033ce/src/msha/middlewares/request.middleware.ts#L266-L269

horihiro commented 3 years ago

Thank you!

for static content, query params are ignored by the CLI. @manekinekko do you mean that the CLI doesn't support query parameters on static content?


I also confirmed the access to /folder/index.html?query=value returns 404 if the following route setting is removed from staticwebapp.configjson in this.

{
    "route": "/folder/*.{html,xml}",
    "rewrite": "/folder/"
}

Is this the expected behavior of the CLI?

# I use the dev container for this investigation, so this might not be the Windows-specific issue.

manekinekko commented 3 years ago

@horihiro I am confused because I can't reproduce this issue. As you can see from the screenshot and logs, the file /folder/index.html?query=value is served as expected!

image

``` [swa] -------------------------------------------------------- [swa] ------------------- processing route ------------------- [swa] -------------------------------------------------------- [swa] processing /folder/index.html?key=value [swa] checking for matching route [swa] check if request match route [swa] - route: /redirect/301 [swa] - wildcard: false [swa] - alternateRequestPath: /folder/index.html [swa] check if request match route [swa] - route: /redirect/302 [swa] - wildcard: false [swa] - alternateRequestPath: /folder/index.html [swa] check if request match route [swa] - route: /redirect/* [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /redirect/* [swa] - pathBeforeWildcard: /redirect/ [swa] - substring don't match. Exit [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /redirect/* [swa] - pathBeforeWildcard: /redirect/ [swa] - substring don't match. Exit [swa] check if request match route [swa] - route: /*.google [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /*.google [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.google [swa] - regexp: /^\/.*google$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /*.google [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.google [swa] - regexp: /^\/.*google$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: /*.{jpg} [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /*.{jpg} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{jpg} [swa] - regexp: /^\/.*(jpg)$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /*.{jpg} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{jpg} [swa] - regexp: /^\/.*(jpg)$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: *.foo [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: *.foo [swa] - pathBeforeWildcard: [swa] turning glob expression into valid RegExp [swa] - glob: *.foo [swa] - regexp: /^.*foo$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: *.foo [swa] - pathBeforeWildcard: [swa] turning glob expression into valid RegExp [swa] - glob: *.foo [swa] - regexp: /^.*foo$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: /*.{png,gif} [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /*.{png,gif} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{png,gif} [swa] - regexp: /^\/.*(png|gif)$/ [swa] - isMatch: false [swa] - alternateRequestPath: /folder/index.html [swa] checking wildcard route [swa] - glob: /*.{png,gif} [swa] - pathBeforeWildcard: / [swa] turning glob expression into valid RegExp [swa] - glob: /*.{png,gif} [swa] - regexp: /^\/.*(png|gif)$/ [swa] - isMatch: false [swa] check if request match route [swa] - route: /folder/*.{html,xml} [swa] - wildcard: true [swa] checking wildcard route [swa] - glob: /folder/*.{html,xml} [swa] - pathBeforeWildcard: /folder/ [swa] turning glob expression into valid RegExp [swa] - glob: /folder/*.{html,xml} [swa] - regexp: /^\/folder\/.*(html|xml)$/ [swa] - isMatch: true [swa] - doesRequestPathMatchWildcardRoute: true [swa] - matchingRouteRule: [swa] - route: /folder/*.{html,xml} [swa] - rewrite: /folder/ [swa] checking auth request [swa] - not an auth request [swa] checking function request [swa] - not a function request [swa] checking HTTP method: GET [swa] - method is valid (allow-list: GET,HEAD,OPTIONS) [swa] checking for query params [swa] checking rewrite auth login request [swa] checking rewrite auth logout request [swa] checking authorizations for route [swa] - shouldCheckRoles: false [swa] - shouldLookupAuthCookie: false [swa] - access authorized [swa] using userConfig [swa] - userConfig: [swa] - routes: [swa] - 0: [swa] - route: /redirect/301 [swa] - redirect: /index2.html [swa] - statusCode: 301 [swa] - 1: [swa] - route: /redirect/302 [swa] - redirect: /index2.html [swa] - statusCode: 302 [swa] - 2: [swa] - route: /redirect/* [swa] - redirect: /index2.html [swa] - 3: [swa] - route: /*.google [swa] - redirect: https://www.google.com/ [swa] - 4: [swa] - route: /*.{jpg} [swa] - redirect: /jpg.html [swa] - 5: [swa] - route: *.foo [swa] - redirect: /foo.html [swa] - 6: [swa] - route: /*.{png,gif} [swa] - redirect: /png_gif.html [swa] - 7: [swa] - route: /folder/*.{html,xml} [swa] - rewrite: /folder/ [swa] - 8: [swa] - route: /rewrite_index2 [swa] - rewrite: /index2.html [swa] - headers: [swa] - a: c [swa] - foo: bar [swa] - 9: [swa] - route: /rewrite-to-function [swa] - rewrite: /api/headers [swa] - 10: [swa] - route: /login-github [swa] - rewrite: /.auth/login/github [swa] - 11: [swa] - route: /logout [swa] - rewrite: /.auth/logout [swa] - 12: [swa] - route: /.auth/login/aad [swa] - statusCode: 404 [swa] - 13: [swa] - route: /status-code-401.txt [swa] - statusCode: 401 [swa] - 14: [swa] - route: /status-code-403.txt [swa] - statusCode: 403 [swa] - 15: [swa] - route: /status-code-404.txt [swa] - statusCode: 404 [swa] - 16: [swa] - route: /only-authenticated [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 17: [swa] - route: /api/info [swa] - allowedRoles: [swa] - 0: authenticated [swa] - 18: [swa] - route: /api/error [swa] - statusCode: 403 [swa] - navigationFallback: [swa] - rewrite: /index.html [swa] - exclude: [swa] - 0: *.{txt} [swa] - responseOverrides: [swa] - 401: [swa] - rewrite: /custom-401.html [swa] - 403: [swa] - rewrite: /custom-403.html [swa] - 404: [swa] - rewrite: custom-404.html [swa] - mimeTypes: [swa] - .swaconfig: application/json [swa] - globalHeaders: [swa] - a: b [swa] - isLegacyConfigFile: false [swa] checking storage content [swa] finding file for request [swa] - requestPath: /folder/index.html [swa] - filePath: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static/folder/index.html [swa] - exists: true [swa] - filePathFromRequest: /folder/index.html [swa] checking mime types [swa] - extension: .html [swa] - found: text/html [swa] constructing headers [swa] - matchingRouteHeaders: [swa] - globalHeaders: [swa] - a: b [swa] checking global headers [swa] - Strict-Transport-Security: max-age=10886400; includeSubDomains; preload [swa] - Referrer-Policy: same-origin [swa] - X-Content-Type-Options: nosniff [swa] - X-XSS-Protection: 1; mode=block [swa] - X-DNS-Prefetch-Control: off [swa] - Cache-Control: must-revalidate, max-age=30 [swa] - ETag: "SWA-CLI-ETAG" [swa] - url: /folder/index.html [swa] - target: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static [swa] customUrl: false [swa] custom page or index.html detected [swa] - url: /folder/index.html [swa] - statusCode: 200 [swa] - target: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static [swa] is4xx: false [swa] checking if file exists in user's output location [swa] - file: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static/folder/index.html [swa] - exists: true [swa] serving static content [swa] - file: /Users/wassimchegham/oss/@azure/static-web-apps-cli/cypress/fixtures/static/folder/index.html [swa] - url: /folder/index.html [swa] - code: 200 ```
horihiro commented 3 years ago

Thanks @manekinekko

It seems that your config file still contains the following route setting according to the following log.

{
    "route": "/folder/*.{html,xml}",
    "rewrite": "/folder/"
}
[swa] turning glob expression into valid RegExp
[swa]  - glob: /folder/*.{html,xml}
[swa]  - regexp: /^\/folder\/.*(html|xml)$/
[swa]  - isMatch: true

Please remove this route setting at first from staticwebapp.config.json and try again if you can. In my env this issue can be reproduced when removing the setting and accessing /folder/index.html?key=value.

manekinekko commented 3 years ago

@horihiro your analysis was correct. When the matching route is absent, then isMatchingRewriteRoute becomes undefined and the rest of the logic fails. We will fix that soon.

https://github.com/Azure/static-web-apps-cli/blob/09eb7223330bf42b94ee87cb2ff639087919c8f0/src/msha/middlewares/request.middleware.ts#L271

Thank you again for your feedback 🙌🏼

manekinekko commented 3 years ago

@irwinwilliams this should be resolved. Please reopen this thread if you still have the issue.

irwinwilliams commented 3 years ago

Hey, very cool @manekinekko, I see it was merged to main, how do I get access to it via npm? (on there it says last published 8 days ago)

geirmarius commented 3 years ago

👋 @irwinwilliams Did you manage to get it working on 0.6.1?

@manekinekko I've been struggling to get vite's dev server to run nicely on swa, and it turns out it's because it's ignoring query params. I'm on swa-cli v0.6.1.

Relevant part of the log: The App.vue file is being requested with query params to fetch the styles for the component, but it looks like it's stripped out when swa proxies it?

--------------------------------------------------------
[swa] ------------------- processing route -------------------
[swa] --------------------------------------------------------
[swa] processing /src/components/HelloWorld.vue
[swa] checking for matching route
[swa] checking auth request
[swa]  - not an auth request
[swa] checking function request
[swa]  - not a function request
[swa] checking HTTP method: GET
[swa]  - method is valid (allow-list: GET,HEAD,OPTIONS)
[swa] checking for query params
[swa] checking rewrite auth login request
[swa] checking rewrite auth logout request
[swa] checking authorizations for route
[swa]  - no matching rule
[swa]  - access authorized
[swa] using userConfig
[swa]  - userConfig: <undefined>
[swa] checking storage content
[swa] finding file for request
[swa]  - filePathFromRequest: /src/components/HelloWorld.vue
[swa] checking mime types
[swa]  - extension: .vue
[swa]  - found: application/octet-stream
[swa] constructing headers
[swa]  - matchingRouteHeaders: <undefined>
[swa]  - globalHeaders: <undefined>
[swa]  - url: /src/components/HelloWorld.vue
[swa]  - target: http://localhost:3000
[swa] customUrl: false
[swa] is4xx: false
[swa] remote dev server detected. Proxying request
[swa]  - url: /src/components/HelloWorld.vue
[swa]  - code: 200
[swa] GET http://localhost:3000/src/components/HelloWorld.vue (proxy)
[swa]
[swa] --------------------------------------------------------
[swa] ------------------- processing route -------------------
[swa] --------------------------------------------------------
[swa] processing /src/App.vue?vue&type=style&index=0&lang.css
[swa] checking for matching route
[swa] checking auth request
[swa]  - not an auth request
[swa] checking function request
[swa]  - not a function request
[swa] checking HTTP method: GET
[swa]  - method is valid (allow-list: GET,HEAD,OPTIONS)
[swa] checking for query params
[swa]  - query: vue=&type=style&index=0&lang.css=
[swa] checking rewrite auth login request
[swa] checking rewrite auth logout request
[swa] checking authorizations for route
[swa]  - no matching rule
[swa]  - access authorized
[swa] using userConfig
[swa]  - userConfig: <undefined>
[swa] checking storage content
[swa]  - query: vue=&type=style&index=0&lang.css=
[swa] finding file for request
[swa]  - filePathFromRequest: /src/App.vue
[swa] checking mime types
[swa]  - extension: .vue
[swa]  - found: application/octet-stream
[swa] constructing headers
[swa]  - matchingRouteHeaders: <undefined>
[swa]  - globalHeaders: <undefined>
[swa]  - url: /src/App.vue
[swa]  - target: http://localhost:3000
[swa] customUrl: false
[swa] is4xx: false
[swa] remote dev server detected. Proxying request
[swa]  - url: /src/App.vue
[swa]  - code: 200
[swa] GET http://localhost:3000/src/App.vue (proxy)
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteTimeMiddleware  : /src/components/HelloWorld.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher corsMiddleware  : /src/components/HelloWorld.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteDecoreURIMiddleware  : /src/components/HelloWorld.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteServePublicMiddleware  : /src/components/HelloWorld.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteTransformMiddleware  : /src/components/HelloWorld.vue
[run] 2021-08-11T11:50:17.132Z vite:cache [memory] /src/components/HelloWorld.vue
[run] 2021-08-11T11:50:17.132Z vite:time 0ms   /src/components/HelloWorld.vue
[swa] getting response from dev server
[swa] GET http://localhost:4280/src/components/HelloWorld.vue - 200
[swa] getting response from dev server
[swa] GET http://localhost:4280/src/App.vue - 200
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteTimeMiddleware  : /src/App.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher corsMiddleware  : /src/App.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteDecoreURIMiddleware  : /src/App.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteServePublicMiddleware  : /src/App.vue
[run] Wed, 11 Aug 2021 11:50:17 GMT connect:dispatcher viteTransformMiddleware  : /src/App.vue
[run] 2021-08-11T11:50:17.133Z vite:cache [memory] /src/App.vue
[run] 2021-08-11T11:50:17.133Z vite:time 0ms   /src/App.vue