所以我有一个非常简单的bash脚本,它正在向一个auth服务器发送标题.标题url被写入var,然后在下一个curl调用中使用.当在第一个curl调用中使用var set时,我得到"curl:(3)在URL中找到非法字符".我能够回显var并且所有看起来都很好,我甚至可以重置var(在我下面的示例中)并且它可以工作.
Bash脚本
URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}')
curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
Run Code Online (Sandbox Code Playgroud)
运行上面的例子时,我得到:
curl: (3) Illegal characters found in URL
Run Code Online (Sandbox Code Playgroud)
URL var看起来像这样(没有非法字符)
https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534
Run Code Online (Sandbox Code Playgroud)
当我在终端中这样做时它起作用:
$ URL = $(卷曲-i -X GET -H "X-AUTH-用户:MyUserna,E" -H "X-验证密钥:MyAPIKey"" HTTPS://urlToAuthServer.tld/auth/v1.0/ "| grep"X-Storage-Url:"| awk'{print $ 2}')
$ echo $ URL
https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534
现在我复制并粘贴字符串并将其重新分配到URL,如此(再次在终端中):
>$ URL="https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534"
>$ curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
Run Code Online (Sandbox Code Playgroud)
有用.
那么为什么我在第一个例子中得到"curl:(3)在URL中发现的非法字符"错误?
更新 我跑了这个: …
我让 Doorkeeper 在本地工作,但是一旦部署到生产环境中,我就会遇到一个奇怪的问题。我无法创建新应用程序,请参见下文:
$> app = Doorkeeper::Application.new :name => 'test', :redirect_uri => 'http://test.com'
=> #<Doorkeeper::Application id: nil, name: "test", uid: nil, secret: nil, redirect_uri: "http://test.com", scopes: "", created_at: nil, updated_at: nil>
$> app.save
(0.8ms) BEGIN
(0.8ms) BEGIN
Doorkeeper::Application Exists (0.7ms) SELECT 1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
Doorkeeper::Application Exists (0.7ms) SELECT 1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
(0.4ms) ROLLBACK
(0.4ms) ROLLBACK
=> false
Run Code Online (Sandbox Code Playgroud)
oauth_applications 表是 100% 空的。
我正在服务器上运行它(在本地它按预期工作),如果您需要更多信息,请告诉我。 …
我是 MongoDB 和 Mongoose 的菜鸟,所以请原谅我...
我正在使用 Node 和 Express 以及 Mongoose。我有一个包含大量子文档的文档,以至于我的服务器在尝试加载所有子文档时内存不足。所以我想选择子文档的最后 30 个项目。这是我现在拥有的,然后猜测我认为我想要什么......
Device.findOne({ device_id: deviceId }, (err, device) => {
....
})
Run Code Online (Sandbox Code Playgroud)
这是一个猜测
Device.findOne({ device_id: deviceId }, { movements: { $slice: 30 } }, (err, device) => {
....
})
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒,提前致谢!!!
我正在尝试设置对 SNS 主题的订阅,我已在 SNS UI 中添加了 HTTP 订阅,并将其标记为“待确认”。我已经设置了端点来查找正确的标头(如下所示)并且正在工作。我的问题是端点永远不会获得“令牌”,请参见下面的我的代码和日志的输出。
NodeJS(w/express 4.15)测试代码:
router.post('/', (req, res, next) => {
console.log('-----------------')
console.log(req.body)
console.log(req.headers)
console.log('-----------------')
if (req.get('x-amz-sns-message-type') == "SubscriptionConfirmation") {
SNS.confirmSubscription({ Token: req.body.Token, TopicArn: req.get('x-amz-sns-topic-arn') }, (err, finished) => {
if (err) console.log(err)
})
} else {
console.log(req.body)
}
})
Run Code Online (Sandbox Code Playgroud)
来自 AWS 的 POST 请求
-----------------
{}
{ host: 'myapp.us-west-2.elasticbeanstalk.com',
'x-real-ip': '172.XXX.40.XXX',
'x-forwarded-for': '54.240.XXX.XXX, 172.XXX.40.XXX',
'content-length': '1604',
'accept-encoding': 'gzip,deflate',
'content-type': 'text/plain; charset=UTF-8',
'user-agent': 'Amazon Simple Notification Service Agent',
'x-amz-sns-message-id': '493b2a00-a99f-4cf3-ac9a-aad8ad6ee115',
'x-amz-sns-message-type': 'SubscriptionConfirmation',
'x-amz-sns-topic-arn': 'arn:aws:sns:us-west-2:4868XXXXXXXX:mysnstopic',
'x-forwarded-port': …Run Code Online (Sandbox Code Playgroud)