cors.js 867 B

123456789101112131415161718192021222324252627282930
  1. const validator = require('../validator');
  2. module.exports = function (req, res, next) {
  3. if (req.headers.origin) {
  4. // very relaxed validation....
  5. validator({
  6. type: 'string',
  7. pattern: '^[a-z\\-]+:\\/\\/(?:[\\w\\-\\.]+(:[0-9]+)?/?)?$'
  8. }, req.headers.origin)
  9. .then(function () {
  10. res.set({
  11. 'Access-Control-Allow-Origin': req.headers.origin,
  12. 'Access-Control-Allow-Credentials': true,
  13. 'Access-Control-Allow-Methods': 'OPTIONS, GET, POST',
  14. 'Access-Control-Allow-Headers': 'Content-Type, Cache-Control, Pragma, Expires, Authorization, X-Dataset-Total, X-Dataset-Offset, X-Dataset-Limit',
  15. 'Access-Control-Max-Age': 5 * 60,
  16. 'Access-Control-Expose-Headers': 'X-Dataset-Total, X-Dataset-Offset, X-Dataset-Limit'
  17. });
  18. next();
  19. })
  20. .catch(next);
  21. } else {
  22. // No origin
  23. next();
  24. }
  25. };