在调试CORS问题时,我遇到了我发现了以下行为.Chrome会发出以下OPTIONS预检请求(由Chrome本身在CURL中重写):
curl -v 'https://www.example.com/api/v1/users' -X OPTIONS -H 'Access-Control-Request-Method: POST' -H 'Origin: http://example.com' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Accept-Language: es-ES,es;q=0.8,en;q=0.6' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://example.com/users/new' -H 'Connection: keep-alive' -H 'Access-Control-Request-Headers: accept, x-api-key, content-type'
Run Code Online (Sandbox Code Playgroud)
如果以下情况,服务器对此请求的响应:
< HTTP/1.1 403 Forbidden
< Date: Thu, 21 Jul 2016 14:16:56 GMT
* Server Apache/2.4.7 (Ubuntu) is not blacklisted
< Server: Apache/2.4.7 (Ubuntu)
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, …Run Code Online (Sandbox Code Playgroud) 我面临以下问题.我有一个ASP Net Core 2 Web应用程序,我想部署到Azure.应用程序身份验证与Azure Active Directory集成,因此当我尝试登录时,会发生以下请求:
GET https://login.microsoftonline.com/ecf3f643-27e5-4aa7-9d56-fd350e1e9c37/oauth2/authorize?client_id=20a2bcb5-0433-4bb4-bba3-d7dc4c533e85&redirect_uri=http://myapplication.mydomain.com/account/signin [...] 200 OK
POST http://myapplication.mydomain.com/account/signin 301 Redirect --> https://myapplication.mydomain.com/account/signin
GET https://myapplication.mydomain.com/account/signin 500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)
第一个GET是正常的Azure Active Directory登录请求.注意redirect_uri参数有协议http.
第二个请求是重定向到redirect_uri带有一些参数的POST.由于我已将Azure配置为仅允许HTTPS流量,因此IIS使用HTTPS重定向到相同的URL.这是第三个要求.请注意,第三个请求是GET请求,因为HTTP重定向始终是GET请求,POST请求的所有参数都会丢失,并且身份验证失败会在后端发出HTTP 500错误.
我试图手动将redirect_uri参数中的协议手动更改为HTTPS,并且它按预期工作.因此,我唯一需要的是让ASP Net Core意识到协议是HTTPS.
怎么办?我在互联网上搜索了大量的页面而没有明确的答案.
注意:redirect_uri由Kestrel设置.由于Azure App Service将IIS放在我的Kestrel前面并在那里进行SSL终止,因此Kestrel和我的应用程序不知道协议是HTTPS,因此在重定向uri中使用HTTP.
更新1
按照@Bruce的建议,我在这里尝试了这个例子,克隆了存储库,并按照那里的说明配置了应用程序和AD,我能够重现错误.
重定向URI继续与http协议一起使用.如果我只在AD应用程序配置中添加https端点作为回复URL,则会收到错误The reply address 'http://testloginad.azurewebsites.net/signin-oidc' does not match the reply addresses configured for the application.如果我将http协议端点添加为回复URL,则会收到如下所示的HTTP …
oauth-2.0 azure-web-sites azure-active-directory asp.net-core
最近,Azure 发布了一项名为Azure Event Hubs for Kafka 的功能,它允许使用 Event Hubs,就像它是 Kafka 集群一样,使用相同的 Kafka 库。这将使我们能够从我们当前的 IaaS Kafka 解决方案迁移到 PaaS 解决方案,具有完全托管解决方案的所有优点,并且对我们的基本代码只进行最小的更改(至少这是承诺)。
但是,在分析迁移时,我们发现很难让我们的基础架构在 Azure 事件中心限制内。我们在 Kafka 中有数百个主题,我们知道我们将来会扩展到数千个主题,但这并不能轻松地放入事件中心。
在 Azure 中,主题概念的匹配项是事件中心,然后还有与 Kafka 集群匹配的命名空间。事实上,每个命名空间都有不同的 DNS 名称,使其成为一个完全不同的系统。限制如下:每个命名空间最多可以有 10 个事件中心,每个订阅最多可以有 100 个命名空间。翻译成 Kafka 行话,最多可达 1000 个主题。让我们假设这对于我们的目的来说已经足够了,但是我需要我的应用程序的不同部分连接到每 10 个主题的不同 Kafka 集群(命名空间),这给整个故事增加了不必要的复杂性。
似乎最终我正在通过重新构建我的应用程序的难度来改变管理我自己的集群基础设施的难度,以便它适合每个集群 10 个奇怪的主题限制。使用 Kafka,我可以在一个集群中拥有 100 个主题。对于事件中心,我需要 10 个集群,每个集群 10 个主题,这增加了了解消费者和生产者需要连接到哪个集群的复杂性。这完全改变了应用程序的架构(使其变得更加复杂)。
我已经在互联网上寻找答案但没有运气,每个人似乎都看到了使用事件中心的很多优势,所以我开始认为我可能遗漏了一些东西。在不大量改变我的架构的情况下,在 10 个主题限制内拟合大量主题的有效方法是什么?
我使用JPA为我的DAO类编写测试,使用Hibernate作为JPA提供程序,以及Spring 3.2.我无法正确注入实体管理器,尝试访问它时会出现NullPointerException.我的GenericDAO实现如下所示:
@Repository
public class GenericDAOImpl implements GenericDAO {
@PersistenceContext(unitName="unitname")
private EntityManager entityManager;
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
// NullPointerException when calling this, entityManager is null
public Query createNamedQuery(String name) {
return entityManager.createNamedQuery(name);
}
// many other methods....
}
Run Code Online (Sandbox Code Playgroud)
测试类看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/com/main/resources/root-context.xml", "/com/main/resources/servlet-context.xml"})
public class TestModel {
@Before
public void setUp() throws Exception{
...
}
@Test
public void test(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
我的root-context.xml如下:
<?xml version="1.0" encoding="UTF-8"?> …Run Code Online (Sandbox Code Playgroud) 在分析当前正在开发的 Java 应用程序时,我们发现了一些可以使用缓存摆脱的瓶颈。应用程序进程请求,它应该尽可能快地这样做。我们正在考虑将 Redis 作为缓存解决方案,因为我们已经在应用程序中使用了它。基本上我们必须缓存java对象。使用Redis,我们必须序列化/反序列化这些对象+网络开销。鉴于基本上 Redis 是一个键值存储,我想知道使用 ConcurrentHashMap 代替 Redis 是否可能更有效,因为这将节省我们的序列化和网络开销。但是,在互联网上搜索,我找不到任何人为此目的使用它。我错过了什么吗?哪个是 ConcurrentHashMap 为此目的的实际限制(在并发请求和缓存数据量方面)?
我正在使用Azure的C#管理API在云中创建资源。我被困在Blob存储中创建一个容器。我确实按照以下说明创建了存储帐户:
// storageAccount here is a Microsoft.Azure.Management.Storage.Fluent.IStorageAccount instance
var storageAccount = _azure.StorageAccounts
.Define(name)
.WithRegion(region)
.WithExistingResourceGroup(resourceGroup)
.WithBlobEncryption()
.WithOnlyHttpsTraffic()
.WithBlobStorageAccountKind()
.WithAccessTier(AccessTier.Hot)
.Create();
Run Code Online (Sandbox Code Playgroud)
但是我不知道该怎么做。从Microsoft文档看来,我必须检索一个Microsoft.WindowsAzure.Storage.CloudStorageAccount实例,但是通过storageAccount上述代码获得的实例位于命名空间中Microsoft.Azure.Management.Storage.Fluent,并且我还没有找到任何CloudStorageAccount从那里获取该值的方法。
是否可以在流畅的名称空间中直接使用API创建容器?如果没有,如何CloudStorageAccount从我的实例中获取实例IStorageAccount?
SO中的这个答案没有帮助,因为它确实Microsoft.WindowsAzure直接使用了名称空间。
我正在编写一个非常简单的应用程序来存储足球比赛的结果,我遇到了以下问题.运行其中一个单元测试时,以下代码:
listCompetition = Competition.objects.filter(compId=competitionId)
if len(listCompetition) == 0:
#some code here
else:
#some code here
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
File "C:\Users\admin\workspace\project\src\bla\bla\module.py", line 222, in getMatches
if len(listCompetition) == 0:
File "C:\Python27\lib\site-packages\django\db\models\query.py", line 82, in __len__
self._result_cache = list(self.iterator())
File "C:\Python27\lib\site-packages\django\db\models\query.py", line 286, in iterator
obj = model(*row[index_start:aggregate_start])
TypeError: __init__() takes exactly 3 arguments (4 given)
Run Code Online (Sandbox Code Playgroud)
但是,如果我用第一行代码替换:
listCompetition = list(Competition.objects.filter(compId=competitionId))
Run Code Online (Sandbox Code Playgroud)
然后它工作得很好.为什么它会以这种奇怪的方式表现?如果我在类比赛的构造函数中只定义了两个参数,那么Django如何传递4个参数?如果有帮助,这里是类竞赛的模型定义:
class Competicion(MultiName):
def __init__(self, canonicalName, compId):
super(Competition, self).__init__(canonicalName, compId)
class MultiName(models.Model):
entId = models.CharField(null=True, max_length=25);
canonicalName = models.CharField(max_length=50, primary_key=True);
def __init__(self, canonicalName, entId=None): …Run Code Online (Sandbox Code Playgroud) 我已经使用 Kafka 几个月了,我意识到一些核心概念对我来说还不是很清楚。我的疑问与consumerId、groupId 和offsets 之间的关系有关。在我们的应用程序中,我们需要 Kafka 使用发布 - 订阅范式工作,因此我们为每个消费者使用不同的组 ID,这些 ID 是随机生成的。
我曾经认为设置auto.offset.reset = latest我的消费者总是会收到他们尚未收到的消息,但最近我了解到事实并非如此。这仅在消费者尚未提交偏移量时才有效。在任何其他情况下,消费者将继续接收偏移量大于其提交的最后一个偏移量的消息。
由于我总是使用随机组 ID 创建新消费者,我意识到我的消费者“没有记忆”,他们是新消费者,他们永远不会提交偏移量,因此该auto.offset.reset = latest政策将始终适用。这就是我怀疑的地方。假设以下场景:
my-topic。auto.offset.reset设置适用latest于两个消费者。my-topic。groupId是随机的,而且我没有设置任何消费者 ID,所以这意味着这是一个新的消费者(对吧?)。应用程序 B 没有收到任何消息。在处理遗留系统时,我需要使用仅接受双精度数作为输入的函数来存储整数,我遇到了以下问题。我们得到一个二进制数,例如:
00111111 11000000 00000000 00000000
如果我们将其表示为整数,则该数字为 1069547520。如果我们将其表示为 IEEE 754 浮点数,则为 1.5。很容易看出整数和 IEEE 754 浮点数之间存在一一对应的关系。我的问题如下。给定两个整数 a 和 b,以及它们对应的 IEEE 754 浮点对应项 A 和 B,a > b 是否意味着 A > B?
我想答案是肯定的,但我缺乏强有力的论据支持。有什么提示吗?