在我们的Web应用程序中,我们使用XHR.getAllResponseHeaders()
-function来获取标头字段名称。我们使用X-Access- Token
来接收JWT令牌,该令牌在下一个请求中发送以保持会话。从今天开始,登录后,每个下一个请求都导致重定向回到登录页面。
奇怪的是,只有Chrome出现了此问题,而不是Firefox或Safari。它只是在我的电脑上,因为我的同事仍然可以登录,而我却无法登录。
我们使用相同的软件,一些javascript,所有内容,因此我们注意到它必须与我的浏览器配合使用。尝试重新安装并禁用了一些插件,但这没关系。
我似乎XHR.getAllResponseHeaders()
函数返回了错误的值,尽管我们从服务器发送了正确的值……有人知道为什么它不再起作用了吗?
经过大量的搜索,调试,测试和无奈之后,我们终于发现Chrome 60中的标头字段名称转换为小写字母,与Chrome
59(在我同事的电脑上)保持不变,这是他们的名字。所以标题字段名称现在x-access-token
是X-Access-Token
对于那些XHR.getAllResponseHeaders()
在某处的javascript中使用-
function且正在使用Chrome或其客户端的用户:准备好对您的javascript进行修补以保持其正常运行,因为 自Chrome
60起,XHR.getAllResponseHeaders()-函数现在仅输出小写的标头字段名称!
一些有相同问题的人:https :
//twitter.com/thegecko/status/890346862875742210
@thegecko:Argg!#Chrome 60强制XHR中的标头名称变为小写。getAllResponseHeaders()破坏了我!
另请参阅:https : //groups.google.com/a/chromium.org/forum/#!
topic /blink-
dev/_oxlCPNsrck ,https :
//github.com/whatwg/xhr/issues/146和更改日志位于https://chromium.googlesource.com/chromium/src/+/99c274ae8e7d366261dcfb89e0b98e733fb9d5f4
根据github和google组中的讨论,我们被警告说,执行区分大小写的字符串比较可能不是一件好事。在即将到来的HTTP /
2中,所有标头均为小写。因此,XHR规范在HTTP / 1.1中也更改为小写所有标头。Chrome(60)是第一个更改此设置的人,但是Gecko /
Firefox(https://bugzilla.mozilla.org/show_bug.cgi?id=1370485)和Webkit
/ Safari的补丁已可用。
我们使用一些简单的代码进行了测试,但是当Foo: Bar
从服务器发送标头时,XHR.getAllResponseHeaders()
-function
的输出(在Chrome 60中)将为`foo:Bar。
因此,为了使它在所有浏览器中都可以使用并适应未来发展:确保对响应中的标头字段名称执行不区分大小写的比较。可以通过XHR.getAllResponseHeaders().toLowerCase()
在处理标题之前使用或使用不区分大小写的正则表达式(例如XHR.getAllResponseHeaders().match(/foo/i);
查找它们)来轻松完成此操作。
编辑: 经过更多测试…我们发现使用
XHR.getResponseHeader()
也是从请求的标头获取值的安全方法。根据上面的示例,在发送标头时Foo: Bar
,无论我们使用XHR.getResponseHeader('Foo')
还是
XHR.getResponseHeader('foo')
都无所谓,两者都将输出值“ Bar”。
该MDN文档XHR.getResponseHeader
证实了这一点:
标题名称的搜索不区分大小写。
我正在学习AOP Spring并尝试一些示例。关于@AfterBack ning,我所理解的是,只有当目标成功返回并且与切入点匹配时,才会调用该方法。然而,在我的例子中,如下所示,我有一个切入点,它定义了所有只返回字符串的方法,但它调用了所有空方法以及返回字符串的方法。 我的建议: 请在下面找到我的Impl课程: 请在下面找到我的MainApp类: 我原本希望只调用getCustomer(),因为
我正在使用JUnit和Mockito库来测试我的应用程序。问题是,当我在代码下面执行时,值在运行时没有返回空列表,并且测试失败。理想情况下,当get执行时,它应该返回空列表 我热切期待着支持。有没有人能帮我一下,如何通过这个测试用例???。如何通过Mockito使第8行的控件通过测试用例??? 请假设,下面两个类没有真实的代码,我们只有二进制文件作为JAR文件,我们不能修改下面的代码....我附上
所以我有一个打开活动的通知: 我制作的活动是一个简单的对话框样式的活动。当我从通知抽屉中打开活动时,在任何其他应用程序上,如facebook、whatsapp、chrome浏览器等,活动就会按预期打开。问题是当我试图关闭它,并回到以前的应用程序。 单击对话框中创建的“关闭”按钮时: 同样的事情发生了:活动结束了,但我要回到主屏幕,而不是上一个应用程序。为什么?? *注意:以前的应用程序仍然在后台工
为了澄清所使用的输入是100,用于投资金额,利率为5%(在该程序中,取5/100,然后/12=0.00417),在这种情况下,投资的持续时间为6个月。因此,在任何利息累积之前的第0个月,没有利息,所以这只是投资的投入金额(100)。然后,在第一个月,它现在运行正常((100*i)*(i interest());或在或情况下((100*1)*(10.00417))=100.417 但当我到了第二个月
我正在对我的一个服务进行Mockito单元测试,我试图模拟它,但无法返回所需的对象。我的代码片段如下所示: 现在,通过了测试用例,但是失败了,因为。 我很困惑,我不是刚刚模拟了返回一个的行为吗?我做了一些研究,发现了这篇文章:Mockito when/then not returning expected value,我想知道如何使用“doreturn()...when()”定义嘲笑行为,但仍然没
问题内容: 以下是我要做什么的快速概述。我想从一个方法调用将记录推送到数据库中的两个不同表。如果有任何失败,我希望一切都回滚。因此,如果失败,我希望将提交的任何内容回滚。 其中的接口是使用mybatis映射到数据库并使用Spring注入设置的。 现在,如果失败,所有内容仍然会推送到数据库。我该如何纠正这种行为? 编辑: 我修改了该类,以更准确地描述我要实现的目标。如果我直接运行,则在出现任何问题时