小编Jas*_*ims的帖子

通过AWS SDK创建签名的S3和Cloudfront URL

是否有人成功使用AWS SDK生成S3存储桶中对象的签名URL,这些URL也可以在CloudFront上运行?我正在使用JavaScript AWS SDK,通过S3链接生成签名URL非常简单.我刚刚创建了一个私有存储桶并使用以下代码生成URL:

var AWS = require('aws-sdk')
  , s3 = new AWS.S3()
  , params = {Bucket: 'my-bucket', Key: 'path/to/key', Expiration: 20}

s3.getSignedUrl('getObject', params, function (err, url) {
  console.log('Signed URL: ' + url)
})
Run Code Online (Sandbox Code Playgroud)

这很好但我也希望向用户公开CloudFront URL,以便他们可以获得使用CDN的更高下载速度.我设置了一个CloudFront发行版,它修改了存储桶策略以允许访问.但是,执行此操作后,任何文件都可以通过CloudFront URL访问,而亚马逊似乎忽略了我的链接中的签名.在阅读了更多内容后,我发现有人生成一个.pem文件来获取使用CloudFront的签名URL,但为什么S3不需要这样做?似乎getSignedUrl方法只使用AWS Secret Key和AWS Access Key进行签名.有没有人得到过这样的设置呢?

更新: 经过进一步研究后,CloudFront似乎处理的URL签名完全不同于S3 [link].但是,我仍然不清楚如何使用Javascript创建签名的CloudFront URL.

javascript amazon-s3 amazon-web-services node.js pre-signed-url

19
推荐指数
1
解决办法
1万
查看次数

如何通过sails.js中的查询参数选择性地填充水线关联

默认情况下,当命中相应的API路径时,sails将填充模型中的所有关系.有谁知道是否可以切换此功能?如果我正在使用一对多关联,我可能不希望在出于性能原因列出所有项目时填充关联.但是当查看单个项目时,完成人口会很好.

例如,假设一张票可以有很多评论.在获取案例列表时我不关心注释,但在查看特定案例时这很重要.我猜测它是如何运作但它失败了:

localhost:1337/tickets?populate=false
Run Code Online (Sandbox Code Playgroud)

更新

我在balderdashy/sails#1695中实现了上述功能.唯一的变化是您有选择地选择要使用的填充关联:

localhost:1337/tickets?populate=[]          // Don't populate anything
localhost:1337/tickets?populate=[comments]  // Only populate comments
Run Code Online (Sandbox Code Playgroud)

这将覆盖populate您的蓝图配置中定义的任何内容.

associations node.js sails.js waterline

16
推荐指数
1
解决办法
5114
查看次数

在sails.js中处理生产/开发/测试配置

有谁知道在帆中处理prod/dev/test配置切换的最佳方法?我真的很喜欢actionhero.js如何基于NODE_ENV的内容自动加载config/environment/{env} .js但是我没有看到在sails中做类似事情的内置方法.我注意到sails将在config//服务器引导期间加载任何文件,所以我现在的hacky解决方案是设置以下内容:

config/
|-- local.js
|-- environment/
|---- production.js
|---- staging.js
|---- development.js
|---- testing.js
Run Code Online (Sandbox Code Playgroud)

然后在每个{env} .js文件中,我只是像这样扩展配置:

if (process.env.NODE_ENV === 'production') {
  // Enter any environment specific config changes
  config.db = {
    db_host: foo,
    db_port: bar
  }
  config.otherThing = {
    somevar: 'someval'
  }
Run Code Online (Sandbox Code Playgroud)

sails.js

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

如何在sails.js中维护多个API版本

有没有人在使用sails.js时有关于维护API的多个版本的想法?想象一个简单的例子:

// Request
GET /api/v1/catVids?min_view_count=10000

// Response
[{"video_title": "top cat fails"}, {"video_title": "funny-ass cats"}] 
Run Code Online (Sandbox Code Playgroud)

用户正在积极地使用API​​的v1,但现在已经改变了将破坏现有功能的要求.例如,属性名称更改.所以现在我们需要使用不同的控制器来满足对这种新行为的请求.我想要做的是让两个API共存,这样就不会破坏向后兼容性.

// Request
GET /api/v2/catVids?minimum_view_count=10000

// Response
[{"title": "top cat fails"}, {"title": "funny-ass cats"}] 
Run Code Online (Sandbox Code Playgroud)

但是,我不确定实现这个的最佳方法.我认为它可以工作的一种方法是在sails app中使用以下目录设置:

api/
|-- controllers/
|---- v1/
|------ CatController.js
|---- v2/
|------ CatController.js
|-- models/
|---- v1/
|------ Cat.js
|---- v2/
|------ Cat.js
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有其他人遇到类似的情况或对该主题有任何建议.

javascript node.js sails.js

8
推荐指数
1
解决办法
2513
查看次数

IE忽略POST中的303重定向 - >重定向 - > GET场景

我有一个启用OAuth2的站点,它遇到了与IE如何处理303响应有关的问题.在流程中,发生3次重定向.

### Chrome/Firefox
POST idp.com/login           (res 302 -> idp.com/authenticate)
GET  idp.com/authenticate    (res 302 -> app.com/oauth2/callback)
GET  app.com/oauth2/callback (res 303 -> app.com/home)
GET  app.com/home

### IE
POST idp.com/login           (res 302 -> idp.com/authenticate)
POST idp.com/authenticate    (res 302 -> app.com/oauth2/callback)
POST app.com/oauth2/callback (res 303 -> app.com/home)
POST app.com/home
Run Code Online (Sandbox Code Playgroud)

由于某种原因,IE似乎维护了原始的请求方法.我尝试通过返回303来至少从我的服务器(app.com)上的原始POST响应中断,但这也没有解决问题.这是意料之外的,因为RFC 2068声明对于303 - See Other响应,应遵循以下内容

可以在不同的URI下找到对请求的响应,并且应该使用该资源上的GET方法检索.此方法主要用于允许输出POST激活的脚本以将用户代理重定向到选定的资源.

我甚至尝试了307响应但没有成功.有没有人对这里发生的事情有任何想法?

internet-explorer redirect http-post post-redirect-get

6
推荐指数
1
解决办法
793
查看次数

对带有自签名证书的 Web 服务使用 apache bench

是否可以通过 Apache Bench 测试使用自签名证书的 Web 服务?默认情况下,它将失败SSL read failed - closing connection。我无论如何都找不到让它忽略 SSL 失败的方法。

$ ab -n 1 -c 1 https://localhost:8080
Benchmarking localhost (be patient)...SSL read failed - closing connection
..done
Run Code Online (Sandbox Code Playgroud)

此外,如果这是不可能的,那么有人知道允许这样做的替代工具吗?

apache ssl benchmarking apachebench

5
推荐指数
0
解决办法
6266
查看次数