小编Fra*_*sco的帖子

在 AWS Lambda 和 Node.js 12.x 中使用自定义字体

我正在尝试创建一个 AWS Lambda 函数来对图像应用水印效果。原始图像将从 S3 中提取,应用水印并将结果上传回 S3。

我使用Sharp通过以下代码创建这些组合:

await sharp(inputImage)
              .rotate()
              .composite([{ input: new Buffer.from(watermark), tile: true, gravity: 'northwest' }])
Run Code Online (Sandbox Code Playgroud)

带有自定义水印 SVG

watermark = `<svg ... <text x="50%" y="100%" style="font-family:'Open Sans';font-weight:400;font-size:75px;font-style:normal;fill:rgba(128,128,128,1);stroke:none;" text-anchor="middle">${event.watermarkName}</text></g></svg>`;
Run Code Online (Sandbox Code Playgroud)

SVG 内部有一个文本元素,我可以动态更改该元素以包含指定的字符串。例如,我可以放置(c) Company Name一张图像和(c) John Doe另一张图像。

该代码在我的机器上运行时有效,但一旦进入具有 Node.js 12.x 运行时的 Lambda 函数,这就是结果 文本水印示例

正如你所看到的,我指定了Open Sans要使用的字体。事实上,我将OpenSans-Regular.ttf文件放入/fonts/,创建了一个fonts.conf文件并按照这个问题FONTCONFIG_PATH='/var/task/fonts'中的描述设置了 a 。

尽管如此,字体仍然无法工作。有人对我如何解决这个问题有建议吗?

fonts amazon-web-services aws-lambda sharp

5
推荐指数
1
解决办法
3634
查看次数

当Allow-Credentials 设置为true 时,为什么不能在Access-Control-Allow-Headers 上使用通配符*?

我有一个网站,React 前端驻留在(比方说)app.mydomain.com 上,api 位于 api.mydomain.com 上。

用户向 API 提交登录请求,登录成功后,会收到一个不错的 cookie 供以后使用。前端仅直接与 API 对话,因此 cookie 上的域只需设置为 api.mydomain.com。

我使用 Axios 执行将标志withCredentials设置为 true 的请求,以接收 cookie。

服务器上允许 CORS 的标头如下:

Access-Control-Allow-Origin: http://app.mydomain.com
Access-Control-Allow-Methods: GET,POST,DELETE,PUT,OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Allow-Credentials: true
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Firefox 的响应如下:

当allow-headers设置为通配符时,Firefox出现错误

但是,一旦将Access-Control-Allow-Headers值设置得更具体,例如 Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept,一切都会正常。

Mozilla 表示,他们不允许对 Origin 值进行“通配”,而不是对 Headers 值进行“通配”,这一页同样如此,但没有提及任何内容。

为什么 Firefox 会有这样的行为?为什么我能找到的任何地方都没有提到它?

firefox cors

3
推荐指数
1
解决办法
2412
查看次数

标签 统计

amazon-web-services ×1

aws-lambda ×1

cors ×1

firefox ×1

fonts ×1

sharp ×1