Salta el contingut

MP08 - UF2: Mòduls Rewrite i Headers

Afegim configuracions

És possible que el nostre servidor php no estigui preparat per a l'execució d'algunes comandes específiques per a treballar en mode API. Per això possiblement ens falta instal·lar algun mòdul. Vegem-ne alguns.

Mòdul rewrite

Recordeu-vos que per treballar en el MVC en backend vàrem habilitar el mòdul rewrite i calia donar permís al directori on es troba el .htaccess per tal que el fitxer .htaccess pogués habilitar-lo.

a2enmod rewrite
service apache2 restart

<Directory /var/www/html/alumne08/API>
    AllowOverride FileInfo
</Directory>
Exemple de fitxer .htaccess
RewriteEngine On
RewriteBase /alumne08/API/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* server.php/$0 [L]

Mòdul headers

En el cas en què estiguem desenvolupant una API, és possible que només donem servei a les peticions que provenen del mateix domini on tenim la API que dona servei.

Si volem permetre l'accés a la API des d'altres ubicacions, cal habilitar el mòdul headers i configurar el servidor apache, amb el mateix fitxer .htaccess per tal de permetre-ho.

Provant un servidor de backend que proveeix una API a la web http://localhost/alumne08/API/cp/17003 que ens proveeix de les dades dels codis postals 17003 no podrà ser accedit des del servidor de VUE que tenim a http://localhost:8000/alumne08, ja que els seus dominis o millor dit orígens, no són els mateixos.

Per a permetre l'accés caldrà, doncs:

habilitar el mòdul headers

L'ajuda del mòdul headers la trobareu aquí.

Per això, caldrà anar al servidor web i habilitar el mòdul amb les següents comandes:

a2enmod headers
service apache2 restart

modificar la configuració del directori del backend

Funcionament de CORS L'ajuda global de CORS la trobem aquí.

L'ajuda pel problema de CORS la trobareu aquí.

Una vegada habilitat, cal indicar des de quins orígens acceptem les peticions. Per això caldrà configurar al directori on tenim els fitxers del backend, o al fitxer .htaccess del directori, la següent directiva:

Header [condition] add|append|echo|edit|edit*|merge|set|setifempty|unset|note header [[expr=]value [replacement] [early|env=[!]varname|expr=expression]]
En el nostre cas el header serà Access-Control-Allow-Origin i si volem permetre accés des de tot arreu, la línia a afegir serà

Header set Access-Control-Allow-Origin '*'

Si, de moment només volem permetre l'accés des del nostre propi PC tal com ho tenim configurat, podem afegir la línia:

Header set Access-Control-Allow-Origin 'http://localhost:8080'

Per fer la prova i habilitar per totes les peticions podem posar un asterisc al lloc

cURL

cURL és un projecte de software consistent en una llibreria (libcurl) orientat a la transferència de fitxers. Suporta els protocole ftp, ftps, http, https, tftp, scp, sftp, telnet, DICT, FILE i LDAP entre altres.

cURL suporta certificats HTTPS, HTTP POST, HTTP PUT, pujades FTP, Kerberos, pujades mitjançant formulari HTTP, proxies, cookies, autenticació mitjançant usuari i contrasenya (Basic, DIgest, NTLM i Negotiate per a HTTP i kerberos 4 per a FTP), continuació de transferència de fitxers, tunneling de proxy HTTP i altres prestacions. cURL és de codi obert, programari lliure distribuït sota la Llicència MIT.

El principal propòsit i ús per a cURL és automatitzar transferències de fitxers o seqüències d'operacions no supervisades. És, per exemple, una eina vàlida per a simular les accions d'usuaris en un navegador web.

Per a instal·lar cURL i fer-lo disponible al nostre servidor caldrà executar el procés d'instal·lació

apt install curl
apt install php-curl
service apache2 restart