Angular 可配置的SSL用于角度+;SpringBoot项目
我正在做一个有弹簧靴和角形9的项目。项目还使用弹性搜索来搜索一些请求。在这个项目中,SSL应用于所有REST请求以及弹性搜索 要在项目中应用SSL,前端和后端的更改都已完成。现在,我们想让SSL成为可配置的,就像任何标志一样,不管是否应用它 对于后端,我可以使用application.yml文件,方法是获取任何标志并读取它以应用SSL是否应用 但在前端文件中主要有:angular.json和package.json都有SSL的更改,但是如何访问application.yml标志的值来识别在前端应用SSL angular.jsonAngular 可配置的SSL用于角度+;SpringBoot项目,angular,spring-boot,ssl,Angular,Spring Boot,Ssl,我正在做一个有弹簧靴和角形9的项目。项目还使用弹性搜索来搜索一些请求。在这个项目中,SSL应用于所有REST请求以及弹性搜索 要在项目中应用SSL,前端和后端的更改都已完成。现在,我们想让SSL成为可配置的,就像任何标志一样,不管是否应用它 对于后端,我可以使用application.yml文件,方法是获取任何标志并读取它以应用SSL是否应用 但在前端文件中主要有:angular.json和package.json都有SSL的更改,但是如何访问application.yml标志的值来识别在前端应
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"webapp": {
"root": "",
"sourceRoot": "src/main/webapp",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "src/main/webapp/dist",
"baseHref": "/webapp/",
"deployUrl": "/webapp/",
"index": "src/main/webapp/index.html",
"main": "src/main/webapp/main.ts",
"polyfills": "src/main/webapp/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
"src/main/webapp/robots.txt",
"src/main/webapp/404.html",
{
"glob": "**/*",
"input": "node_modules/ng2-pdfjs-viewer/pdfjs",
"output": "/assets/pdfjs"
}
],
"styles": [
"src/main/webapp/styles.scss"
],
"scripts": [],
"es5BrowserSupport": true
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/main/webapp/environments/environment.ts",
"with": "src/main/webapp/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "4mb",
"maximumError": "6mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "webapp:build",
"ssl": true,
"sslKey": "C://Workarea//ssl//server.key",
"sslCert": "C://Workarea//ssl//server.crt"
},
"configurations": {
"production": {
"browserTarget": "webapp:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "webapp:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/main/webapp/test.ts",
"polyfills": "src/main/webapp/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"styles": [
"src/main/webapp/styles.scss"
],
"scripts": [],
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
"src/main/webapp/robots.txt",
"src/main/webapp/404.html",
{
"glob": "**/*",
"input": "node_modules/ng2-pdfjs-viewer/pdfjs",
"output": "/assets/pdfjs"
}
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
},
"webapp-e2e": {
"root": "",
"projectType": "application",
"prefix": "",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "protractor.conf.js",
"devServerTarget": "webapp:serve"
},
"configurations": {
"production": {
"devServerTarget": "webapp:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "webapp",
"cli": {
"analytics": "808c136f-eea0-4753-a321-b09e208a02c4"
}
}
{
"name": "regis-ri-tool",
"version": "0.0.0",
"description": "Description for Rule Interpretation Tool",
"cacheDirectories": [
"node_modules"
],
"scripts": {
"postinstall": "ngcc",
"ng": "ng",
"prestart": "node build-info.js",
"start": "ng serve --port 8888 --ssl true --ssl-cert C:\\WorkArea\\ssl\\server.crt --ssl-key C:\\WorkArea\\ssl\\server.key --aot true --proxy-config proxy.conf.json",
"prebuild": "node build-info.js",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"prebuild:prod": "node build-info.js",
"build:prod": "ng build --prod --build-optimizer"
},
"private": true,
"engines": {
"node": ">=10.13.0"
},
"dependencies": {
"@angular/animations": "~9.1.0",
"@angular/cdk": "^9.1.0",
"@angular/common": "~9.1.0",
"@angular/compiler": "~9.1.0",
"@angular/core": "~9.1.0",
"@angular/flex-layout": "^9.0.0-beta.29",
"@angular/forms": "~9.1.0",
"@angular/material": "^9.1.0",
"@angular/material-moment-adapter": "^9.1.0",
"@angular/platform-browser": "~9.1.0",
"@angular/platform-browser-dynamic": "~9.1.0",
"@angular/router": "~9.1.0",
"@ngx-translate/core": "^11.0.1",
"@types/jquery": "^3.3.29",
"classlist.js": "^1.1.20150312",
"core-js": "^2.5.4",
"fs-extra": "^8.1.0",
"hammerjs": "^2.0.8",
"jquery": "^3.4.1",
"material-dynamic-table": "^9.4.0",
"material-icons": "^0.3.1",
"moment": "^2.24.0",
"ng2-pdfjs-viewer": "^5.0.1",
"ngx-cookie-service": "^3.0.3",
"ngx-mat-select-search": "^2.1.2",
"ngx-quill": "^5.1.0",
"ngx-webstorage": "^5.0.0",
"popper.js": "^1.15.0",
"quill": "^1.3.7",
"rxjs": "~6.5.4",
"stream": "0.0.2",
"timers": "^0.1.1",
"tslib": "^1.10.0",
"web-animations-js": "^2.3.2",
"xml2js": "^0.4.19",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.7",
"@angular/cli": "~9.1.0",
"@angular/compiler-cli": "~9.1.0",
"@angular/language-service": "~9.1.0",
"@angular/platform-server": "^9.1.0",
"@nguniversal/express-engine": "^9.0.2",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"codelyzer": "^5.1.2",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.1.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"ng-diff-match-patch": "^3.0.1",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.7.5"
}
}
{
"/": {
"target": "https://localhost:8443/",
"secure": false,
"logLevel": "debug"
}
}
在服务中定义了ssl、sslKey和sslCert
package.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"webapp": {
"root": "",
"sourceRoot": "src/main/webapp",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "src/main/webapp/dist",
"baseHref": "/webapp/",
"deployUrl": "/webapp/",
"index": "src/main/webapp/index.html",
"main": "src/main/webapp/main.ts",
"polyfills": "src/main/webapp/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
"src/main/webapp/robots.txt",
"src/main/webapp/404.html",
{
"glob": "**/*",
"input": "node_modules/ng2-pdfjs-viewer/pdfjs",
"output": "/assets/pdfjs"
}
],
"styles": [
"src/main/webapp/styles.scss"
],
"scripts": [],
"es5BrowserSupport": true
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/main/webapp/environments/environment.ts",
"with": "src/main/webapp/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "4mb",
"maximumError": "6mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "webapp:build",
"ssl": true,
"sslKey": "C://Workarea//ssl//server.key",
"sslCert": "C://Workarea//ssl//server.crt"
},
"configurations": {
"production": {
"browserTarget": "webapp:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "webapp:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/main/webapp/test.ts",
"polyfills": "src/main/webapp/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"styles": [
"src/main/webapp/styles.scss"
],
"scripts": [],
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
"src/main/webapp/robots.txt",
"src/main/webapp/404.html",
{
"glob": "**/*",
"input": "node_modules/ng2-pdfjs-viewer/pdfjs",
"output": "/assets/pdfjs"
}
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
},
"webapp-e2e": {
"root": "",
"projectType": "application",
"prefix": "",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "protractor.conf.js",
"devServerTarget": "webapp:serve"
},
"configurations": {
"production": {
"devServerTarget": "webapp:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "webapp",
"cli": {
"analytics": "808c136f-eea0-4753-a321-b09e208a02c4"
}
}
{
"name": "regis-ri-tool",
"version": "0.0.0",
"description": "Description for Rule Interpretation Tool",
"cacheDirectories": [
"node_modules"
],
"scripts": {
"postinstall": "ngcc",
"ng": "ng",
"prestart": "node build-info.js",
"start": "ng serve --port 8888 --ssl true --ssl-cert C:\\WorkArea\\ssl\\server.crt --ssl-key C:\\WorkArea\\ssl\\server.key --aot true --proxy-config proxy.conf.json",
"prebuild": "node build-info.js",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"prebuild:prod": "node build-info.js",
"build:prod": "ng build --prod --build-optimizer"
},
"private": true,
"engines": {
"node": ">=10.13.0"
},
"dependencies": {
"@angular/animations": "~9.1.0",
"@angular/cdk": "^9.1.0",
"@angular/common": "~9.1.0",
"@angular/compiler": "~9.1.0",
"@angular/core": "~9.1.0",
"@angular/flex-layout": "^9.0.0-beta.29",
"@angular/forms": "~9.1.0",
"@angular/material": "^9.1.0",
"@angular/material-moment-adapter": "^9.1.0",
"@angular/platform-browser": "~9.1.0",
"@angular/platform-browser-dynamic": "~9.1.0",
"@angular/router": "~9.1.0",
"@ngx-translate/core": "^11.0.1",
"@types/jquery": "^3.3.29",
"classlist.js": "^1.1.20150312",
"core-js": "^2.5.4",
"fs-extra": "^8.1.0",
"hammerjs": "^2.0.8",
"jquery": "^3.4.1",
"material-dynamic-table": "^9.4.0",
"material-icons": "^0.3.1",
"moment": "^2.24.0",
"ng2-pdfjs-viewer": "^5.0.1",
"ngx-cookie-service": "^3.0.3",
"ngx-mat-select-search": "^2.1.2",
"ngx-quill": "^5.1.0",
"ngx-webstorage": "^5.0.0",
"popper.js": "^1.15.0",
"quill": "^1.3.7",
"rxjs": "~6.5.4",
"stream": "0.0.2",
"timers": "^0.1.1",
"tslib": "^1.10.0",
"web-animations-js": "^2.3.2",
"xml2js": "^0.4.19",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.7",
"@angular/cli": "~9.1.0",
"@angular/compiler-cli": "~9.1.0",
"@angular/language-service": "~9.1.0",
"@angular/platform-server": "^9.1.0",
"@nguniversal/express-engine": "^9.0.2",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"codelyzer": "^5.1.2",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.1.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"ng-diff-match-patch": "^3.0.1",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.7.5"
}
}
{
"/": {
"target": "https://localhost:8443/",
"secure": false,
"logLevel": "debug"
}
}
类似的start标记在package.json中有ssl命令
用于识别ssl的应用程序local.yml的一部分:
...............
............
server:
port: 8443
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: passw0rd
key-store-type: PKCS12
key-alias: regisri
servlet:
context-path: /webapp
............
..............
还有一个文件要应用更改:
proxy.config.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"webapp": {
"root": "",
"sourceRoot": "src/main/webapp",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "src/main/webapp/dist",
"baseHref": "/webapp/",
"deployUrl": "/webapp/",
"index": "src/main/webapp/index.html",
"main": "src/main/webapp/main.ts",
"polyfills": "src/main/webapp/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
"src/main/webapp/robots.txt",
"src/main/webapp/404.html",
{
"glob": "**/*",
"input": "node_modules/ng2-pdfjs-viewer/pdfjs",
"output": "/assets/pdfjs"
}
],
"styles": [
"src/main/webapp/styles.scss"
],
"scripts": [],
"es5BrowserSupport": true
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/main/webapp/environments/environment.ts",
"with": "src/main/webapp/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "4mb",
"maximumError": "6mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "webapp:build",
"ssl": true,
"sslKey": "C://Workarea//ssl//server.key",
"sslCert": "C://Workarea//ssl//server.crt"
},
"configurations": {
"production": {
"browserTarget": "webapp:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "webapp:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/main/webapp/test.ts",
"polyfills": "src/main/webapp/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"styles": [
"src/main/webapp/styles.scss"
],
"scripts": [],
"assets": [
"src/main/webapp/favicon.ico",
"src/main/webapp/assets",
"src/main/webapp/robots.txt",
"src/main/webapp/404.html",
{
"glob": "**/*",
"input": "node_modules/ng2-pdfjs-viewer/pdfjs",
"output": "/assets/pdfjs"
}
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
},
"webapp-e2e": {
"root": "",
"projectType": "application",
"prefix": "",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "protractor.conf.js",
"devServerTarget": "webapp:serve"
},
"configurations": {
"production": {
"devServerTarget": "webapp:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "webapp",
"cli": {
"analytics": "808c136f-eea0-4753-a321-b09e208a02c4"
}
}
{
"name": "regis-ri-tool",
"version": "0.0.0",
"description": "Description for Rule Interpretation Tool",
"cacheDirectories": [
"node_modules"
],
"scripts": {
"postinstall": "ngcc",
"ng": "ng",
"prestart": "node build-info.js",
"start": "ng serve --port 8888 --ssl true --ssl-cert C:\\WorkArea\\ssl\\server.crt --ssl-key C:\\WorkArea\\ssl\\server.key --aot true --proxy-config proxy.conf.json",
"prebuild": "node build-info.js",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"prebuild:prod": "node build-info.js",
"build:prod": "ng build --prod --build-optimizer"
},
"private": true,
"engines": {
"node": ">=10.13.0"
},
"dependencies": {
"@angular/animations": "~9.1.0",
"@angular/cdk": "^9.1.0",
"@angular/common": "~9.1.0",
"@angular/compiler": "~9.1.0",
"@angular/core": "~9.1.0",
"@angular/flex-layout": "^9.0.0-beta.29",
"@angular/forms": "~9.1.0",
"@angular/material": "^9.1.0",
"@angular/material-moment-adapter": "^9.1.0",
"@angular/platform-browser": "~9.1.0",
"@angular/platform-browser-dynamic": "~9.1.0",
"@angular/router": "~9.1.0",
"@ngx-translate/core": "^11.0.1",
"@types/jquery": "^3.3.29",
"classlist.js": "^1.1.20150312",
"core-js": "^2.5.4",
"fs-extra": "^8.1.0",
"hammerjs": "^2.0.8",
"jquery": "^3.4.1",
"material-dynamic-table": "^9.4.0",
"material-icons": "^0.3.1",
"moment": "^2.24.0",
"ng2-pdfjs-viewer": "^5.0.1",
"ngx-cookie-service": "^3.0.3",
"ngx-mat-select-search": "^2.1.2",
"ngx-quill": "^5.1.0",
"ngx-webstorage": "^5.0.0",
"popper.js": "^1.15.0",
"quill": "^1.3.7",
"rxjs": "~6.5.4",
"stream": "0.0.2",
"timers": "^0.1.1",
"tslib": "^1.10.0",
"web-animations-js": "^2.3.2",
"xml2js": "^0.4.19",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.7",
"@angular/cli": "~9.1.0",
"@angular/compiler-cli": "~9.1.0",
"@angular/language-service": "~9.1.0",
"@angular/platform-server": "^9.1.0",
"@nguniversal/express-engine": "^9.0.2",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"codelyzer": "^5.1.2",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.1.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"ng-diff-match-patch": "^3.0.1",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.7.5"
}
}
{
"/": {
"target": "https://localhost:8443/",
"secure": false,
"logLevel": "debug"
}
}
启用了server.ssl.enabled后,我可以在后端工作,但无法在前端package.json、proxy.config.json和angular.json文件中获得此功能
我希望可配置以识别这两个文件中的ssl更改,我们构建war文件,以便我们需要可配置的前端和后端。如果我理解正确,您的angular正在调用多个后端。。。您想知道是否应该使用不同的ssl。如果这是正确的,我将有一个是您ui知道的主要类,用于查找后端上配置的其他类的调用。@Tim.Burnell backend是唯一的一个,许多类都有更改。我需要一种方法来确定应用程序是否应该使用ssl从前端和后端运行。如果说确定您是否正在运行ssl与是否需要运行ssl,这不是更好的说法吗?因为您可以检查url并确定它是否已经在运行ssl。我可以在运行项目后进行检查,我需要在它之前进行检查,因为url将在为项目创建构建时生成。我需要在创建生成之前进行检查。如果为每个环境重建。。。您可以使用环境文件:但是我倾向于不可变。。。所以所有环境都使用相同的构建。如果我理解正确,您的angular正在调用多个后端。。。您想知道是否应该使用不同的ssl。如果这是正确的,我将有一个是您ui知道的主要类,用于查找后端上配置的其他类的调用。@Tim.Burnell backend是唯一的一个,许多类都有更改。我需要一种方法来确定应用程序是否应该使用ssl从前端和后端运行。如果说确定您是否正在运行ssl与是否需要运行ssl,这不是更好的说法吗?因为您可以检查url并确定它是否已经在运行ssl。我可以在运行项目后进行检查,我需要在它之前进行检查,因为url将在为项目创建构建时生成。我需要在创建生成之前进行检查。如果为每个环境重建。。。您可以使用环境文件:但是我倾向于不可变。。。因此,所有环境都使用相同的构建。