POST Angular / Tomcar上的403状态代码

时间:2018-03-30 17:03:07

标签: angular http tomcat cors preflight

我正在编写我的第一个Angular应用程序,我想向后端tomcat服务器发送一个post请求。使用相同的信息我传递给POST man,它返回200 OK响应给我。

myPost(firstname: String, lastname: String, top: String, bottom: String): Observable<Object> {
    return this.http.post('http://localhost:8088/myportal/api/myService', JSON.stringify({
      "jsonrpc": "2.0",
      "id": "1",
      "method": "myPost",
      "params": {firstname,lastname,top,bottom}
    }),{
      headers: new HttpHeaders({
        'SSOUser': 'ARDC2342FC'
      })
    });
  }

我找到了一个解决方案,说要修改Tomcat配置,所以我编辑了Tomcat web.xml文件,以使CorsFilter能够允许所有来源。

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
   <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.methods</param-name>
    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

仍然无法正常工作。我找到了一个解决方案,讨论使用角度代理,然后我创建了一个proxy.config.json文件,这是以前的解决方案之一,但它仍然无法正常工作

{
    "/myportal/api" : {
        "target" : "http://localhost:8088/myportal/api", 
        "secure" : false,
        "logLevel" : "debug", 
        "changeOrigin": true
    }
}

它仍然不起作用。我没有看到这个问题的任何其他替代解决方案,所以我只是假设我做错了什么。有人可以帮忙吗?如果我取出我的SSOUser,我会收到一个500错误,这与postman上发生的事情是一样的,所以这是我可以验证我的前端请求是否相同的唯一方法。

1 个答案:

答案 0 :(得分:0)

由于请求标头中有ssouser,因此发生了403错误。由于某种原因,它阻止了请求到达服务器端。当我把它拿出来时,我能够通过服务器。虽然我需要在服务器端对ssouser信息进行硬编码才能通过身份验证。

我需要查找在http请求中发送ssouser信息的正确方法。