CORS

默认情况下,PostgREST 设置了高度宽松的跨域资源共享,这就是它接受来自任何域的 Ajax 请求的原因。此行为可以通过使用 server-cors-allowed-origins 进行配置。

它还处理浏览器执行的 预检请求,这些请求使用返回的 Access-Control-Max-Age: 86400 标头(86400 秒 = 24 小时)进行缓存。这有助于减少后续请求的延迟。

一个 POST 预检请求将如下所示

curl -i "http://localhost:3000/items" \
  -X OPTIONS \
  -H "Origin: http://example.com" \
  -H "Access-Control-Request-Method: POST" \
  -H "Access-Control-Request-Headers: Content-Type"
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS, HEAD
Access-Control-Allow-Headers: Authorization, Content-Type, Accept, Accept-Language, Content-Language
Access-Control-Max-Age: 86400

允许的来源

使用以下配置设置,PostgREST 将接受来自域 http://example.comhttp://example2.com 的 CORS 请求。

server-cors-allowed-origins="http://example.com, http://example2.com"