小编lke*_*e00的帖子

凭证包含Unicode时的基本身份验证编码

在这个问题上,我一直在撞墙.我读过类似的帖子和文章; 大多数建议在Tomcat的server.xml文件中将URIEncoding设置为UTF-8,但这似乎没有区别.

我将一个ReSTful Web服务部署到托管在Tomcat 7上的测试环境中.Tomcat配置为使用Java 6,尽管Java 7也安装在计算机上.当针对托管在那里的服务运行基本身份验证测试时,登录失败,当原始凭据包含Unicode字符时,我收到HTTP状态401的响应.凭证仅包含ASCII时,基本身份验证工作正常.我也可以在不使用基本身份验证的情况下登录 - 我的服务支持自定义登录标头和RFC 2047.使用该方法,凭据是否包含Unicode无关紧要,登录不是问题.

具体来说,"问题"似乎是用户名是UTF-8编码两次.我的记录器(单独的问题)中存在一个错误,其中日志文件是ANSI编码的.将日志文件转换为UTF-8时,字符将正确显示.但在这种情况下,有问题的用户名比它应该的长得多,并且当文件转换为UTF-8时,它看起来就像它应该在第一个位置(在转换之前).例如:

  • BAD(BASIC AUTH):SampleUser-Ã,¢A°Â£Å½Â'eÃŒâ€SA©Â¾Ã± - > SampleUser-¢d£Ž'eÌ,é¾±
  • GOOD(RFC 2047):SampleUser-Âð£Ž'eÌ,é¾± - > SampleUser-¢龱

这里真正的踢球者是我有自己的本地运行的Tomcat 7(Java 6)实例,我不能重现它的问题.我比较了两只雄猫的conf目录,它们看起来是一样的.我无法弄清楚为什么基本的auth在一个环境中而不是另一个环境中工作.我正在从我的机器上运行测试,所以它不能归因于我测试它的方式(JUnit/JSystem)的差异.

这就是我所知道的:

  • 在特权方面,我们谈论的是什么类型的用户并不重要.用户名中的Unicode是有问题的因素.
  • 请求是通过XML还是JSON发送并不重要.我的服务支持两种类型的序列化.
  • accept charset和content-type(如果适用)在请求时都设置为UTF-8.
  • 两个环境中的Java系统属性都相同.

以下文章对我来说非常有趣,因为它们提出了将RFC 2047和基本身份验证结合在一起的可能性.我不认为这是必要的,因为基本的auth字符串本身只包含ASCII(因为它是base-64编码).即使如此,为什么在一个Tomcat服务器上需要这样的东西而不是另一个?我觉得追求这种组合方法并不是解决根本问题,这真是让我发疯的原因!

提前感谢您尝试或仔细检查的建议.测试环境在某种程度上仅限于我 - 我只能在非工作时间"玩它",所以如果我没有及时回复,我会提前道歉.

unicode rest encoding tomcat basic-authentication

5
推荐指数
1
解决办法
1566
查看次数

在 WebStorm 7 中调试时未命中 Typescript 断点

我正在使用 Typescript SDK 0.9.1.1 和 WebStorm 7。我有一个 .ts 文件,其中有一个文件观察器转换其 .js 和 sourcemap 文件。我还有一个 HTML 文件,如下所示...

<!DOCTYPE html>
<html>
<head></head>
<body>
    <p id="output">5</p>
    <script src="HelloWorld.js"></script>
    <script>
        var u = new Utils();
        document.getElementById('output').innerHTML = u.plusOne(5);
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

plusOne 函数仅接受数字(在本例中为 5)并返回该数字加一。我的页面、javascript 和 Typescript 工作正常,因为页面加载时显示“6”。

我可以在 .js 文件中设置断点,并且它们会被命中(向我显示 Typescript 文件的等效行),但如果我在原始 .ts 文件中设置断点,它们就不会被命中。我已经搜索过这个问题,但我的问题似乎与其他人不同 - 我在本地运行(而不是远程),并且我在 WebStorm 中设置断点,而不是 Chrome 的调试视图。

在 WebStorm 中,“脚本”选项卡仅显示 .js 和 .html 文件。我应该在这里看到更多吗?如果这是问题所在,我该如何解决?我已打开调试配置,但没有找到在那里添加 .ts 文件的方法。

debugging breakpoints webstorm typescript

5
推荐指数
2
解决办法
2766
查看次数