我正在尝试创建一个 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 。
尽管如此,字体仍然无法工作。有人对我如何解决这个问题有建议吗?
我有一个网站,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 的响应如下:
但是,一旦将Access-Control-Allow-Headers值设置得更具体,例如
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept,一切都会正常。
Mozilla 表示,他们不允许对 Origin 值进行“通配”,而不是对 Headers 值进行“通配”,这一页同样如此,但没有提及任何内容。
为什么 Firefox 会有这样的行为?为什么我能找到的任何地方都没有提到它?