2015-02-26 2 views
2

Я пытаюсь добавить заголовки CORS к входящим запросам, но я заметил, что app.response.headers является неизменной картой, а app.request.response не существует, даже если он представлен в примерах документации. Итак, к запросу OPTIONS я отвечаю, используя новый ответ Shelf, но я не могу найти способ добавить новые заголовки в ответ на фактический запрос. Есть идеи?Как вы добавляете заголовки CORS в перехватчик Redstone?

@app.Interceptor(r"/api/.*", chainIdx: 1) 
corsInterceptor() { 

    if (app.request.method == "OPTIONS") { 
     var response = new shelf.Response.ok("", headers: HEADERS); 
     app.chain.interrupt(statusCode: HttpStatus.OK, responseValue: response); 
    } else { 
    // app.request.response is not available 
     app.request.response.headers.add('Access-Control-Allow-Origin', '*'); 
     app.chain.next(); 
    } 
} 

ответ

1

Я нашел исправление в первой части кода в документации перехватчик ... :)

@app.Interceptor(r"/api/.*", chainIdx: 1) 
corsInterceptor() { 
    if (app.request.method == "OPTIONS") { 
     var response = new shelf.Response.ok("", headers: HEADERS); 
     app.chain.interrupt(statusCode: HttpStatus.OK, responseValue: response); 
    } else { 
     app.chain.next(() => app.response.change(headers: HEADERS)); 
    } 
} 

app.chain.next() может взять функцию обратного вызова в качестве аргумента, который, как ожидается, чтобы вернуться a Response объект. В этом случае app.response.change() возвращает ответ с правильными заголовками.

Смежные вопросы