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

前端 未结 1 1987
伪装坚强ぢ
伪装坚强ぢ 2021-01-13 02:11

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

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-13 02:16

    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 _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

    0 讨论(0)
提交回复
热议问题