我有一个Java Backend(带有Jersey)和一个Angular Client(在不同的主机上),它访问Jersey提供的api。
没有身份验证,一切都很好(我有一个CORS过滤器)。
现在,当我在Java后端向web.xml添加基本身份验证时,问题就开始了。
样品:
<security-constraint>
<web-resource-collection>
<web-resource-name>Sample</web-resource-name>
<url-pattern>/manager-api/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
<!--<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint> -->
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
我尝试在每个AngularJS $ http调用上设置Basis Authentication标头。但问题是,这个标题没有附加到首先进行的OPTIONS调用。
HTTP示例:
App.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + authdata;
}]);
你知道我怎么能得到这个吗?有没有办法将标题添加到选项调用?或者是否可以在不允许GET和POST调用的情况下允许OPTIONS调用?
非常感谢任何帮助。
电贺 马克
答案 0 :(得分:0)
我没有看到任何地方定义的authdata。因此,除非您未包含所有相关代码,否则您将发送标题:Authorization: Basic
。