我开发了一个PhoneGap应用程序,现在正在转换为移动网站.除了一个小小的故障外,一切顺利.我通过POST请求使用某个第三方API,这在应用程序中运行良好,但在移动网站版本中失败.
仔细看后,似乎AngularJS(我猜浏览器实际上)是先发送一个OPTIONS请求.我今天学到了很多关于CORS的知识,但我似乎无法弄清楚如何完全禁用它.我无权访问该API(因此无法进行更改),但他们已将我正在处理的域添加到其Access-Control-Allow-Origin标头中.
这是我正在谈论的代码:
var request = {
language: 'fr',
barcodes: [
{
barcode: 'somebarcode',
description: 'Description goes here'
}
]
};
}
var config = {
headers: {
'Cache-Control': 'no-cache',
'Content-Type': 'application/json'
}
};
$http.post('http://somedomain.be/trackinginfo', request, config).success(function(data, status) {
callback(undefined, data);
}).error(function(data, status) {
var err = new Error('Error message');
err.status = status;
callback(err);
});
Run Code Online (Sandbox Code Playgroud)
如何阻止浏览器(或AngularJS)发送OPTIONS请求并跳转到实际的POST请求?我正在使用AngularJS 1.2.0.
提前致谢.
我有一套相当复杂的CloudFormation模板,用于配置我们基础架构的不同环境.但是我最近收到了使用相当广泛的标签列表(如15)标记创建的资源的请求.
将标签硬编码到每个模板文件中对我来说似乎不是一个好主意.我宁愿创建一次标记列表,并为每个可标记资源引用它们.问题是:我甚至不确定这是可能的.您是否知道可以实现可重复使用的标签列表?
我想写这个:
ECSAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
...
Tags: !Ref ElTags
Run Code Online (Sandbox Code Playgroud)
而不是
ECSAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
...
Tags: !Ref ElTags
- Key: Name
Value: !Join ["-", [!Ref EnvironmentName, 'ecs-as-group'] ]
PropagateAtLaunch: true
- Key: TEAM
Value: !Ref TeamName
PropagateAtLaunch: true
Run Code Online (Sandbox Code Playgroud) 我一直在开发一个从 Amazon SQS 接收消息的小型 Spring Boot 应用程序。但是我预见处理这些消息可能会失败,所以这就是为什么我认为添加死信队列是个好主意。
但是有一个问题:当处理失败时(我通过为某些消息抛出异常来强制执行)它不会在以后重新尝试并且不会移动到死信队列。我正在努力寻找问题,因为似乎没有太多信息。
但是,如果我查看Amazon 的文档,他们似乎能够做到,但不使用 Spring Boot 注释。有没有什么方法可以让下面的代码在不自己编写太多 JMS 代码的情况下工作?
这是我正在使用的当前配置。
@Configuration
public class AWSConfiguration {
@Value("${aws.sqs.endpoint}")
private String endpoint;
@Value("${aws.iam.key}")
private String iamKey;
@Value("${aws.iam.secret}")
private String iamSecret;
@Value("${aws.sqs.queue}")
private String queue;
@Bean
public JmsTemplate createJMSTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate(getSQSConnectionFactory());
jmsTemplate.setDefaultDestinationName(queue);
jmsTemplate.setDeliveryPersistent(true);
jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
return jmsTemplate;
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(getSQSConnectionFactory());
factory.setConcurrency("1-1");
return factory;
}
@Bean
public JmsTransactionManager jmsTransactionManager() {
return new JmsTransactionManager(getSQSConnectionFactory());
}
@Bean …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一些Docker镜像.为此,我想使用Maven pom.xml文件中指定的版本号作为标记.然而,我对声明性Jenkins管道很新,我无法弄清楚如何更改我的环境变量,以便VERSION包含所有阶段的正确版本.
这是我的代码
#!groovy
pipeline {
tools {
maven 'maven 3.3.9'
jdk 'Java 1.8'
}
environment {
VERSION = '0.0.0'
}
agent any
stages {
stage('Checkout') {
steps {
git branch: 'master', credentialsId: '290dd8ee-2381-4c5b-8d33-5631d03ee7be', url: 'git@gitlab.crosslang.local:company/SOME-API.git'
sh "git clean -f && git reset --hard origin/master"
}
}
stage('Build and Test Java code') {
steps {
script {
def pom = readMavenPom file: 'pom.xml'
VERSION = pom.version
}
echo "${VERSION}"
sh "mvn clean install -DskipTests"
}
}
stage('Build Docker images') { …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用(相对)新的3.0 Java驱动程序连接到MongoDB副本集.但是,我似乎无法捕获用户提供错误凭据时发生的MongoSecurityExceptions.这是我目前的代码.
try {
MongoClientURI mongoClientURI = new MongoClientURI("mongodb://<user>:<password>@member1.com:27017/?authSource=db"
this.mongoClient = new MongoClient(mongoClientURI);
}
catch(Exception e) {
// TODO: some proper exception handling
System.err.println(e.toLocalizedMessage());
}
Run Code Online (Sandbox Code Playgroud)
使用正确的凭据运行时,此代码可以正常工作,但在提供错误的凭据时,会在try-catch之外抛出异常.
com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='<user>', source='<source>', password=<hidden>, mechanismProperties={}}
at com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:61)
at com.mongodb.connection.DefaultAuthenticator.authenticate(DefaultAuthenticator.java:32)
at com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:99)
at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:44)
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
知道在哪里处理身份验证异常?
我正在将 Spring Boot 应用程序作为 Docker 容器运行。到目前为止,这工作得很好,但是当我尝试使用 Spring Cloud Consul 时,它也让我有些头痛。它可以很好地从 Consul KVS 读取配置,但健康检查似乎正在运行。
默认运行状况检查使用 docker 容器的主机名,例如http://users-microservice/health。显然,从领事访问时这不会解决。
没问题,文档提到您可以在 bootstrap.yml 文件中使用healthCheckPath来配置它。这就是我现在所拥有的:
spring:
application:
name: users-microservice
cloud:
consul:
host: myserver.com
port: 8500
config:
prefix: API-CONFIG
profileSeparator: '__'
discovery:
tags: users-microservice
healthCheckPath: http://myserver.com:${server.port}/status
healthCheckInterval: 30s
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个变量的使用方式似乎与我预期的非常不同。这就是领事试图达到的目标:
Get http://users:18090http//myserver.com:18090/status: dial tcp: unknown port tcp/18090http
我怎样才能解决这个问题?我应该设置一些未记录的配置参数吗?
在过去的几周里,我能够很好地创建 SpotFleetRequests(通过 Java)。但是从昨天开始我收到以下错误:
com.amazonaws.services.ec2.model.AmazonEC2Exception: Tag specification resource type must have a value (Service: AmazonEC2; Status Code: 400; Error Code: InvalidSpotFleetRequestConfig; Request ID: ef69f477-e8f3-4d86-aa91-1646c4067d68)
Run Code Online (Sandbox Code Playgroud)
我并没有真正改变任何东西,更奇怪的是:我已经在我的SpotFleetRequestConfigData的SpotFleetLaunchSpecification中添加了SpotFleetTagSpecification。
这是我的代码:
List<Tag> tags = new ArrayList<>();
tags.add(new Tag("TEAM", "CROCODILE"));
SpotFleetTagSpecification tagSpec = new SpotFleetTagSpecification().withTags(tags);
SpotFleetLaunchSpecification launchSpec = new SpotFleetLaunchSpecification()
.withSecurityGroups(new GroupIdentifier().withGroupId(securityGroupId))
.withIamInstanceProfile(new IamInstanceProfileSpecification().withArn(instanceProfileArn))
.withImageId(imageId)
.withInstanceType(InstanceType.M3Xlarge)
.withSubnetId(subnetIds)
.withUserData(getUserDataToConfigureECSCluster(ecsClusterName))
.withTagSpecifications(tagSpec);
// Configure the actual request
SpotFleetRequestConfigData config = new SpotFleetRequestConfigData()
.withIamFleetRole(fleetRoleArn)
.withLaunchSpecifications(launchSpec)
.withAllocationStrategy(AllocationStrategy.LowestPrice)
.withTargetCapacity(targetCapacity)
.withType(FleetType.Maintain)
.withClientToken(spotFleetToken);
RequestSpotFleetRequest request = new RequestSpotFleetRequest()
.withSpotFleetRequestConfig(config);
RequestSpotFleetResult …Run Code Online (Sandbox Code Playgroud) spring-boot ×2
amazon-ec2 ×1
amazon-sqs ×1
angularjs ×1
consul ×1
cors ×1
java ×1
jenkins ×1
jms ×1
mongodb ×1
post ×1
spring-cloud ×1