如何在 serverless.yml 中设置响应头?

Dha*_*ani 6 javascript httpresponse amazon-web-services http-headers serverless-framework

我有无服务器 API,它与无服务器框架版本 1.25 一起使用

\n\n

出于安全原因,我想添加响应标头。请帮助我如何通过 serverless.yml 文件设置以下标头。出于安全原因是否有必要添加此标头?

\n\n

\xe2\x80\xa2 内容安全策略:包括 default-src 'self'

\n\n

\xe2\x80\xa2 严格传输安全 max-age=31536000; 包括子域;预载

\n\n

\xe2\x80\xa2 X-内容类型选项:nosniff

\n\n

\xe2\x80\xa2 X-XSS 保护:1

\n\n

\xe2\x80\xa2 缓存控制:max-age=0;过期=-1 或过期:1990 年 1 月 1 日星期五 00:00:00 GMT;无缓存,必须重新验证

\n\n

下面是我的无服务器应用程序 serverless.yaml

\n\n
service: myService\nprovider:\n  name: aws\n  runtime: nodejs6.10\n  stage: dev\n  region: eu-west-1\n  environment:\n    REGION: ${self:provider.region}\n    PROJECT_NAME: ${self:custom.projectName}\n    SERVERLESS_STAGE: ${self:provider.stage}\n    SERVERLESS_SERVICE: ${self:service}\n    IP_ADDRESS: http://example.com\nfunctions:\n   getMyFunction:\n     handler: handler.getMyFunction\n     timeout: 30\n     events:\n      - http:\n          method: get\n          path: api/getMyFunction/v1\n          integration: lambda\n          cors: true\n          authorizer:\n            name: authorizerFunc\n            identitySource: method.request.header.Token\n            authorizationType: AWS_IAM\n
Run Code Online (Sandbox Code Playgroud)\n

Ema*_*avi 5

您可以使用Lambda 代理集成。根据文档,您需要创建一个函数,该函数将在有人访问您的 API 端点时运行。

举个例子 :

module.exports.hello = function (event, context, callback) {
    console.log(event); // Contains incoming request data (e.g., query params, headers and more)

    const response = {
        statusCode: 200,
        headers: {
            "x-custom-header": "My Header Value"
        },
        body: JSON.stringify({ "message": "Hello World!" })
    };

    callback(null, response);
};
Run Code Online (Sandbox Code Playgroud)

在你的 serverless.yml 中

functions:
 index:
   handler: handler.hello
   events:
     - http: GET hello
Run Code Online (Sandbox Code Playgroud)