当前位置: 首页 > 知识库问答 >
问题:

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

蔚和安
2023-03-14

我有一个无服务器API,它与无服务器框架版本1.25一起工作

由于安全原因,我想添加响应头。请帮助我如何通过serverless.yml文件设置下面的标题。出于安全考虑,有必要添加此标题吗?

内容-安全-策略:包括默认-src“自我”

•严格的交通安全最大年龄=31536000;包括子域;预载

•X-Content-Type-Options:nosniff

•X-XSS-保护:1

•缓存控制:最大年龄=0;Expires=-1或Expires:1990年1月1日星期五格林威治标准时间00:00:00;没有缓存,必须重新验证

下面是我的无服务器应用程序无服务器。亚马尔

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

共有3个答案

丁雅惠
2023-03-14
service: myService 
provider:
  name: aws
  runtime: nodejs6.10
  stage: dev
  region: eu-west-1
  environment:
    REGION: ${self:provider.region}
    PROJECT_NAME: ${self:custom.projectName}
    SERVERLESS_STAGE: ${self:provider.stage}
    SERVERLESS_SERVICE: ${self:service}
    IP_ADDRESS: http://example.com
functions:
  getMyFunction:
   handler: handler.getMyFunction
   timeout: 30
   events:
    - http:
      method: get
      path: api/getMyFunction/v1
      integration: lambda
      cors: true
      authorizer:
        name: authorizerFunc
        identitySource: method.request.header.Token
        authorizationType: AWS_IAM
      response:
        headers:
          Content-Security-Policy: "'Include default-src 'self''"
          Strict-Transport-Security: "'max-age=31536000; includeSubDomains; preload'"
          X-Content-Type-Options: "'nosniff'"
          X-XSS-Protection: "'1'"
          Cache-Control: "'max-age=0; Expires=-1 or Expires: Fri, 01 Jan 1990 00:00:00 GMT; no-cache, must-revalidate'"
万俟旭
2023-03-14

由于您使用Lambda集成,因此必须将其放入serverless中。yml

service: myService
provider:
  name: aws
  runtime: nodejs6.10
  stage: dev
  region: eu-west-1
  environment:
    REGION: ${self:provider.region}
    PROJECT_NAME: ${self:custom.projectName}
    SERVERLESS_STAGE: ${self:provider.stage}
    SERVERLESS_SERVICE: ${self:service}
    IP_ADDRESS: http://example.com
functions:
   getMyFunction:
     handler: handler.getMyFunction
     timeout: 30
     events:
      - http:
          method: get
          path: api/getMyFunction/v1
          integration: lambda
          cors: true
          authorizer:
            name: authorizerFunc
            identitySource: method.request.header.Token
            authorizationType: AWS_IAM
          response:
            headers:
              Content-Security-Policy: "'Include default-src 'self''"
              Strict-Transport-Security: "'max-age=31536000; includeSubDomains; preload'"
              X-Content-Type-Options: "'nosniff'"
              X-XSS-Protection: "'1'"
              Cache-Control: "'max-age=0; Expires=-1 or Expires: Fri, 01 Jan 1990 00:00:00 GMT; no-cache, must-revalidate'"

参考:https://serverless.com/framework/docs/providers/aws/events/apigateway#custom-response-headers

段干博明
2023-03-14

您可以使用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);
};

在你的无服务器系统中。yml

functions:
 index:
   handler: handler.hello
   events:
     - http: GET hello
 类似资料:
  • 问题内容: 这是我的代码: 但是,当我从浏览器向服务器发出请求时,出现此错误: 我也尝试过这种方法,在请求之后设置响应头: 没有骰子。我犯了同样的错误。有没有一种方法可以只在route函数中设置响应头?这样的事情将是理想的: 但我还是找不到这样做。请帮忙。 编辑 如果我使用POST请求卷曲URL,如下所示: 我得到这个回应: 有任何想法吗? 问题答案: 你可以很容易地做到这一点: 查看和 但是有些

  • 在我的java项目中,我想提供一个下载word文件的函数。当我输出默认文件名时,大写的英文字符将自动转换为小写。我怎样才能解决这个问题。 我该怎么修好它?

  • 问题内容: 我需要将CORS设置为在express服务的脚本上启用。如何为公共/资产在这些返回的响应中设置标题? 问题答案: npm上至少有一个中间件用于处理Express中的CORS:cors。[请参阅@mscdex答案] 这是从ExpressJS DOC 设置自定义响应头的方法 将标题字段设置为值 或传递一个对象以一次设置多个字段。 别名为

  • 有一个需要实现的REST APIendpoint用于获取一些信息并将后端请求发送到另一个服务器,来自后端服务器的响应必须设置为最终响应。我的问题是如何在javax.ws.rs.core.响应中设置响应体? 这里的消息是我需要设置的。但是我尝试了几种方法。没有一个奏效。

  • 问题内容: 我从API的响应中收到X-Frame- Options标头,但据我所知,为了防止clickjacking攻击,我需要在UI代码中添加它。UI代码(用angularjs编写)部署在Tomcat(版本7.0.72)服务器中。我尝试在应用程序的web.xml中添加以下过滤器。 但是,我看不到标题被添加。有人可以帮我找出解决方案吗? 问题答案: 我找到了解决方案。X-Frame- Option

  • 我有一个pythonwebsocket服务器和一个nodejs客户端,但我无法实现websocket的协议握手。 下面的最小WebSocket服务器使用(使用)。文件名为: 以下最小websocket客户端使用库。文件名为: 启动python ws-server: 从nodejs ws客户端连接: 客户端的输出是 服务器终端的输出为: 在我看来,python服务器需要设置一个名为的头,该头的值与它