@@ -44,17 +44,39 @@ void private_CWebServer_execute_request(CwebServer *self,int socket,const char *
4444 }
4545
4646
47+
48+ if (!response && self -> allow_cors ){
49+ if (strcmp (request -> method ,"OPTIONS" ) == 0 ) {
50+
51+ response = newCwebHttpResponse ();
52+ CwebHttpResponse_add_header (response ,"Access-Control-Allow-Origin" ,"*" );
53+ CwebHttpResponse_add_header (response ,"Access-Control-Allow-Methods" ,"*" );
54+ CwebHttpResponse_add_header (response ,"Access-Control-Allow-Headers" ,"*" );
55+ CwebHttpResponse_set_content (response ,"OK" ,2 );
56+ response -> status_code = 200 ;
57+
58+ cweb_print ("CORS preflight request handled\n" );
59+ }
60+ }
61+
62+
63+
64+
4765 if (!response ){
4866 //lambda que o usuario passa
4967 response = self -> request_handler (request );
68+ if (self -> allow_cors ){
69+ // Adiciona os cabeçalhos CORS à resposta
70+ CwebHttpResponse_add_header (response ,"Access-Control-Allow-Origin" ,"*" );
71+ CwebHttpResponse_add_header (response ,"Access-Control-Allow-Methods" ,"*" );
72+ CwebHttpResponse_add_header (response ,"Access-Control-Allow-Headers" ,"*" );
73+ }
5074 }
5175
52- if (response && self -> allow_cors ){
53- private_cweb_generate_cors_response (response );
54- }
55- cweb_print ("executed client lambda\n" );
5676
5777
78+
79+
5880 //means that the main function respond nothing
5981 if (response == NULL ){
6082
0 commit comments