How to create/add middleware that adds default headers to each request

笑着哭i 提交于 2019-12-19 09:04:53

问题


How can I add middleware to the shelf pipeline that adds default HTTP headers to each request?


回答1:


Update

There is now a pub package to simplify adding CORS headers
see https://pub.dartlang.org/packages/shelf_cors

Original

See also https://groups.google.com/a/dartlang.org/forum/#!topic/cloud/2Vn_IqzGtTc

final Map<String, String> _headers = {'Access-Control-Allow-Origin': '*',
                                      'Content-Type': 'text/html'};

// for OPTIONS (preflight) requests just add headers and an empty response
shelf.Response _options(shelf.Request request) => (request.method == 'OPTIONS') ?
    new shelf.Response.ok(null, headers: _headers) : null;

shelf.Response _cors(shelf.Response response) => response.change(headers: _headers);

shelf.Middleware _fixCORS = shelf.createMiddleware(
    requestHandler: _options, responseHandler: _cors);

final shelf.Handler handler = const shelf.Pipeline()
  .addMiddleware(_fixCORS)
  .addMiddleware(shelf.logRequests())
  .addMiddleware(exceptionResponse())
  .addHandler(routes.handler);

See also http://thomaslockerambling.blogspot.co.at/2014/10/shelf-middleware-adding-cors-headers.html



来源:https://stackoverflow.com/questions/26253389/how-to-create-add-middleware-that-adds-default-headers-to-each-request

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!