↓Skip to main content
Il·lustració d'una peça de trencaclosques d'una app de Web Viewer de FileMaker encaixant en un cadenat — les tres solucions (proxy nginx del mateix origen, configuració CORS directa, Let's Encrypt automatitzat) desbloquejant les crides fetch() a OData i a la Data API
Tres maneres de desbloquejar fetch() des d’un Web Viewer de FileMaker: proxy del mateix origen, configuració CORS directa o Let’s Encrypt automatitzat.

Si alguna vegada has construït una aplicació JavaScript moderna dins d’un Web Viewer de FileMaker que crida a les APIs de FileMaker Server — com OData o la Data API — directament mitjançant fetch(), gairebé segur que t’has topat amb el clàssic mur del navegador:

Preflight response is not successful. Status code: 405
Fetch API cannot load https://fms.example.com/fmi/odata/v4/... due to access control checks.

Darrere d’aquest únic error s’hi amaga un problema de dos caps:

  1. Cross-Origin Resource Sharing (CORS): la teva pàgina del Web Viewer i l’API de FileMaker Server viuen en orígens diferents (o en ports/protocols diferents), i la configuració Apache per defecte de FMS no respon a les peticions preflight OPTIONS ni reflecteix l’origen de la teva aplicació.
  2. Confiança TLS / SSL: FileMaker Server exigeix HTTPS per a OData. En una xarxa interna on el port 80 no està disponible o ja l’ocupa un altre servidor, aconseguir un certificat vàlid a FMS — o confiar en un certificat autofirmat a cada dispositiu client — es converteix ràpidament en un mal de cap de manteniment.

Tres sortides provades #

A la nostra nova guia de codi obert, fms-cors-proxy, desglossem les tres arquitectures pràctiques per resoldre-ho netament en FileMaker Server.

1. El proxy invers del mateix origen (nginx davant de FMS) #

Si ja tens un servidor web principal a la teva xarxa amb els ports 80/443 i un certificat vàlid de Let’s Encrypt, col·loca nginx davant de FileMaker Server:

  • Serveix la teva aplicació del Web Viewer directament des de nginx.
  • Fes proxy invers de les peticions /fmi/ internament cap a FileMaker Server amb proxy_ssl_verify off.

Com que el navegador només parla amb nginx en un únic domini amb un certificat vàlid, CORS desapareix completament, fetch() funciona directament a tots els clients (FileMaker Pro, Go i WebDirect), i FMS pot conservar intacte el seu certificat autofirmat per defecte.

👉 Obre el mapa interactiu del proxy invers — segueix cada petició des del navegador, passant per nginx, fins a FileMaker Server, pas a pas.

2. Configuració CORS directa a FileMaker Server (httpd.conf) #

Quan la teva aplicació web realment necessita viure en un host separat, has d’abraçar les peticions cross-origin. La nostra guia recorre les regles exactes de <Location "/fmi"> necessàries a la configuració Apache de FileMaker Server (httpd.conf i httpd.conf.2.4), incloent:

  • Reflectir orígens LAN de confiança (amb números de port).
  • Permetre les capçaleres que requereix fms-odata-js (odata-version, Prefer, Authorization, etc.).
  • Retornar 200 OK a les peticions preflight OPTIONS en lloc de 405 Method Not Allowed.
  • Recarregar l’Apache de FMS de forma neta mitjançant launchctl kickstart sense reiniciar el servidor de base de dades.

👉 Obre el mapa interactiu de CORS/Apache — recorre tot el flux de preflight i resposta a FileMaker Server.

3. Let’s Encrypt DNS-01 automatitzat a FMS #

Vols que el propi FileMaker Server sigui l’únic endpoint amb un certificat vàlid tant a HTTPS (443) com a les connexions de clients FileMaker (5003), sense obrir el port 80 a internet? També enllacem amb el nostre repositori germà, fms-letsencrypt-dns01, que automatitza l’emissió i renovació de certificats DNS-01 directament a FMS — ho vam cobrir en profunditat a la nostra entrada anterior.

Llegeix la guia completa i descarrega les plantilles de configuració #

Tant si vols eliminar CORS amb un bloc nginx de 15 línies com si prefereixes arreglar els preflights d’Apache directament a FileMaker Server, el repositori inclou instruccions pas a pas, comandes curl de verificació, taules de resolució de problemes i plantilles de configuració a punt per fer servir.

👉 Fes una ullada a fms-cors-proxy a GitHub