我们有一个Spring-MVC应用程序,在Jetty服务器上部署了websockets。我们还有如下所示的HashLoginService配置为jetty。当应用程序启动时,我们可以使用FF,Chrome,Opera,IE上完整的websockets功能访问它,但不能访问Safari。我们唯一得到的是401.禁用HashLoginService后,websockets工作正常。 Jetty中是否存在某些配置或需要某些配置,以便websockets在Safari中使用身份验证。谢谢。
Safari version : 11.0.3(desktop version)
Jetty - 9.4
jetty.xml:
<Arg>
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">Default Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
</New>
</Arg>
</Call>
来自项目的web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>username</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user-role</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>username</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user-role</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>user-role</role-name>
</security-role>
知道我们能做什么吗?谢谢。
答案 0 :(得分:1)
Safari和WebSockets显然不支持标准HTTP身份验证。
请参阅:https://bugs.webkit.org/show_bug.cgi?id=80362
您可以在不同的stackoverflow答案中找到一些解决方法。