
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:
- 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
OPTIONSni reflecteix l’origen de la teva aplicació. - 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 ambproxy_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 OKa les peticions preflightOPTIONSen lloc de405 Method Not Allowed. - Recarregar l’Apache de FMS de forma neta mitjançant
launchctl kickstartsense 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.