From 2f0a6b62f1c6c3c844bf13d05e65ca496a481dfe Mon Sep 17 00:00:00 2001 From: Abelangel <abelange.burgosdi@hes-so.ch> Date: Sat, 15 Mar 2025 14:53:04 +0100 Subject: [PATCH] nginx gere completement cors, routes partiellement valides (Post /QCM ,get /QCM valides) --- .../correction_qcm/src/express/Server.ts | 4 +- microservices/cors.conf | 15 +-- .../creation_qcm/src/express/Server.ts | 4 +- microservices/navigation_qcm/pom.xml | 36 -------- .../navigation_qcm/sonar-project.properties | 11 --- microservices/nginx.conf | 91 +++++++++++++++++++ .../realise_qcm/src/express/Server.ts | 4 +- .../search_qcm/src/express/Server.ts | 4 +- 8 files changed, 108 insertions(+), 61 deletions(-) delete mode 100644 microservices/navigation_qcm/pom.xml delete mode 100644 microservices/navigation_qcm/sonar-project.properties diff --git a/microservices/correction_qcm/src/express/Server.ts b/microservices/correction_qcm/src/express/Server.ts index a8f8cf66..b4b0e0db 100644 --- a/microservices/correction_qcm/src/express/Server.ts +++ b/microservices/correction_qcm/src/express/Server.ts @@ -30,12 +30,12 @@ export class Server { this.backend.use(morganMiddleware); //Log API accesses this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/ this.backend.use(bodyParser.json()); - this.backend.use(cors({ + /*this.backend.use(cors({ origin: '*' , methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Authorization', 'Content-Type'] })); //Allow CORS requests - +*/ // Routes this.backend.use('/', response_routes); diff --git a/microservices/cors.conf b/microservices/cors.conf index c63cde7d..c51cb1a7 100644 --- a/microservices/cors.conf +++ b/microservices/cors.conf @@ -1,12 +1,15 @@ - # Autoriser toutes les origines -add_header 'Access-Control-Allow-Origin' '*'; -add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; -add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type'; -add_header 'Access-Control-Max-Age' 1728000; +add_header 'Access-Control-Allow-Origin' '*' always; +add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always; +add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always; +add_header 'Access-Control-Max-Age' 1728000 always; -# Gérer uniquement les requêtes OPTIONS avec 204 +# Gérer les pré-requêtes OPTIONS correctement if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always; + add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always; + add_header 'Access-Control-Max-Age' 1728000 always; add_header 'Content-Length' 0; add_header 'Content-Type' 'text/plain charset=UTF-8'; return 204; diff --git a/microservices/creation_qcm/src/express/Server.ts b/microservices/creation_qcm/src/express/Server.ts index 24e6bee2..34ffd828 100644 --- a/microservices/creation_qcm/src/express/Server.ts +++ b/microservices/creation_qcm/src/express/Server.ts @@ -29,12 +29,12 @@ export class Server { this.backend.use(morganMiddleware); //Log API accesses this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/ this.backend.use(bodyParser.json()); - this.backend.use(cors({ + /*this.backend.use(cors({ origin: '*' , methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Authorization', 'Content-Type'] })); //Allow CORS requests - +*/ // Routes this.backend.use('/', qcm_routes); diff --git a/microservices/navigation_qcm/pom.xml b/microservices/navigation_qcm/pom.xml deleted file mode 100644 index e276ca8a..00000000 --- a/microservices/navigation_qcm/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>com.example</groupId> - <artifactId>navigation_qcm</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>jar</packaging> - - <name>Navigation_qcm Microservice</name> - - <dependencies> - <!-- Ajoute ici les dépendances spécifiques à ton microservice --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - <version>2.5.4</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.8.1</version> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/microservices/navigation_qcm/sonar-project.properties b/microservices/navigation_qcm/sonar-project.properties deleted file mode 100644 index eb3987f2..00000000 --- a/microservices/navigation_qcm/sonar-project.properties +++ /dev/null @@ -1,11 +0,0 @@ -sonar.projectKey=navigation_qcm -sonar.projectName=Navigation QCM Microservice -sonar.projectVersion=1.0-SNAPSHOT -sonar.sources=src -sonar.tests=test -sonar.language=ts -sonar.typescript.tsconfigPath=tsconfig.json -sonar.sourceEncoding=UTF-8 -sonar.exclusions=node_modules/**,target/**,prisma/migrations/** -sonar.test.inclusions=**/*.test.ts -sonar.typescript.lcov.reportPaths=coverage/lcov.info \ No newline at end of file diff --git a/microservices/nginx.conf b/microservices/nginx.conf index 23bfa959..b9143be3 100644 --- a/microservices/nginx.conf +++ b/microservices/nginx.conf @@ -24,66 +24,157 @@ http { location /reponseCorrect/ { proxy_pass http://service-correction-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /responses_QCM/ { proxy_pass http://service-correction-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /feedback { proxy_pass http://service-correction-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /QCM { proxy_pass http://service-creation-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /QCM/ { proxy_pass http://service-creation-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /numeric_question { proxy_pass http://service-creation-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /response { proxy_pass http://service-realise-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /terminer { proxy_pass http://service-realise-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /question { proxy_pass http://service-realise-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /realised_QCMs { proxy_pass http://service-search-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /created_QCMs { proxy_pass http://service-search-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /true_false_question { proxy_pass http://service-creation-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } location /join { proxy_pass http://service-realise-qcm:30992; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass_request_headers on; +proxy_set_header Authorization $http_authorization; + include cors.conf; } diff --git a/microservices/realise_qcm/src/express/Server.ts b/microservices/realise_qcm/src/express/Server.ts index e178be3c..9cc57297 100644 --- a/microservices/realise_qcm/src/express/Server.ts +++ b/microservices/realise_qcm/src/express/Server.ts @@ -30,12 +30,12 @@ export class Server { this.backend.use(morganMiddleware); //Log API accesses this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/ this.backend.use(bodyParser.json()); - this.backend.use(cors({ + /*this.backend.use(cors({ origin: '*' , methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Authorization', 'Content-Type'] })); //Allow CORS requests - +*/ // Routes this.backend.use('/', questions_routes); diff --git a/microservices/search_qcm/src/express/Server.ts b/microservices/search_qcm/src/express/Server.ts index 6a3fea76..8f8843cb 100644 --- a/microservices/search_qcm/src/express/Server.ts +++ b/microservices/search_qcm/src/express/Server.ts @@ -30,12 +30,12 @@ export class Server { this.backend.use(morganMiddleware); //Log API accesses this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/ this.backend.use(bodyParser.json()); - this.backend.use(cors({ + /*this.backend.use(cors({ origin: '*' , methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Authorization', 'Content-Type'] })); //Allow CORS requests - +*/ // Routes this.backend.use('/', questions_routes); this.backend.use(express.json()); -- GitLab