先日、Lightsail + Dockerという組み合わせで、ExmentというOSS WebDBシステムを構築したという話を書きました。
んで、その後にもExmentとMFクラウド請求書をAPIで組み合わせる記事も書きました。
で、両者の記事で大事なことを書き忘れていたんですね。
ExmentのAPIが通らない
Postmanでは通るんだけど、Node.jsで通らない。なぜだ… そうか、CORSか…
ということで、Exmentを運用しているDocker-composeはこちらなのですが、Webサーバーはnginxで動いています。
というわけで、nginx用のCORS設定を追記しました。
nginx.conf
server {
listen 8080;
server_name _;
root /var/www/exment/public;
index index.php index.html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE';
add_header Access-Control-Allow-Headers 'Origin, Authorization, Accept, Content-Type';
add_header Access-Control-Max-Age 3600;
add_header Content-Type 'text/plain charset=UTF-8';
add_header Content-Length 0;
return 204;
}
try_files $uri /index.php?$query_string;
}
location ~ \.php$ {
add_header Access-Control-Allow-Origin '*' always;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}