我目前正在使用Tomcat8.5服务器(Eclipse-后端有JPA的Java EE和前端有angular6的Eclipse)开发RESTful应用程序。 我正在尝试对前端发送给后端的请求使用SSL加密,但是我收到以下未知错误:
OPTIONS https://localhost:8443/myproject/services/User/login 0 ()
和服务器,似乎从未收到请求。我已经用Postman测试了完全相同的请求,并且效果很好。
GET请求也发生相同的情况。
我为实现SSL加密所做的步骤是:
1)生成密钥
2)在Tomcat配置的server.xml上注释以下行:
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
3)注释并编辑server.xml的以下部分
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/home/mike/.keystore" keyAlias="tomcat" keystorePass="123456"
clientAuth="false" sslProtocol="TLS"/>
4)将以下行添加到我的应用程序的web.xml中(在WEB-INF中)
<security-constraint>
<web-resource-collection>
<web-resource-name>myproject</web-resource-name>
<url-pattern>/services/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
如果与我的问题有关,我也在chrome上使用CORS插件。
EDIT1:没有SSL加密,所有请求都可以正常工作。
例如,POST http://localhost:8080/myproject/services/User/login可以工作(当然,web.xml中没有<security-constraint>
)。
发送请求的简单服务称为:
this.http.post.(https://localhost:8443/myproject/services/User/login, loginForm, headers);
在此处初始化标题:
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
我没有任何拦截器可以根据请求更改/添加某些内容。