小编Htt*_*ort的帖子

某些导航会关闭Internet Explorer 10开发人员工具

我正在尝试通过使用开发人员工具控制台监控网络来调试Internet Explorer 10的问题,但我遇到了奇怪的行为 - 有时控制台只是关闭而且所有记录的流量都丢失了.

更确切地说,呼叫序列如下(这实际上是标准的SAML 2.0身份验证流程,IDP上的客户端证书登录):

  1. 获取https://application.host/alias - > response是一个自动提交POST表单:
  2. POST https://identity.provider.host/sso/end/point/alias - >使用证书进行身份验证,并返回包含SAML 2.0响应的自动提交POST表单,并将其提交给:
  3. POST http://application.host/acs/end/point - >将自动提交POST表单返回到:
  4. POST https://application.host/alias(最初访问的资源) - 重定向到:
  5. 获取https://application.host/alias

请注意,初始访问后的所有内容都会自动发生,用户无需单击任何链接或提交某些表单.

自动提交POST表单是这样的:

<html>
<head> 
... some head data here...
</head>
<body onLoad="document.forms[0].submit()">
  <form name="auto.submit.form">
   ... some form fields here...
  </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题出现在第2点之后 - 开发人员工具控制台刚关闭但这似乎不会影响浏览器的实际工作.

我也试过HttpWatch Professional - 我得到了同样的效果 - 插件只是停止录制或完全关闭.在这种情况下我不能使用Fiddler,因为它阻止我调试实际问题(即当启用Fiddler时它可以工作).此问题也是IE特有的,因此我无法使用其他浏览器的开发人员工具.

关于这个的任何想法/提示?

更新:我想我至少知道了一部分问题:当导航到不同区域时,开发人员工具窗口关闭.即在我的情况下,步骤2中的主机位于Internet区域,而来自本地Intranet区域中其他步骤的主机,然后在从第2点到第3点的导航完成后关闭开发工具窗口(而不是重定向时)从1到2完成).不同之处在于,第一个是通过javascript和自提交表单完成的,而另一个只是302重定向响应.

将所有站点添加到本地Intranet区域后,问题停止发生.仍然是一个谜,似乎是一个IE问题而不是开发工具问题,因为HttpWatch似乎也受其影响.

internet-explorer developer-tools httpwatch internet-explorer-10

11
推荐指数
1
解决办法
9696
查看次数

std :: condition_variable虚假阻塞

如您所知,应该在循环中调用条件变量以避免虚假唤醒.像这样:

while (not condition)
    condvar.wait();
Run Code Online (Sandbox Code Playgroud)

如果另一个线程想要唤醒等待线程,则必须将condition标志设置为true.例如:

condition = true;
condvar.notify_one();
Run Code Online (Sandbox Code Playgroud)

我想知道,这种情况是否有可能阻止条件变量:

1)等待线程检查条件标志,发现它等于FALSE,因此,它将进入condvar.wait()例程.

2)但就在此之前(但是在条件标志检查之后)等待线程被内核抢占(例如,因为时隙到期).

3)此时,另一个线程想要通知等待线程有关条件.它将条件标志设置为TRUE并调用condvar.notify_one();

4)当内核调度程序再次运行第一个线程时,它进入condvar.wait()例行程序,但通知已经丢失.

因此,等待线程无法退出condvar.wait(),尽管条件标志设置为TRUE,因为不再有唤醒通知.

可能吗?

c++ condition-variable c++11

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