Java Angular 9(HttpClient)如何修复CORS错误?

Java Angular 9(HttpClient)如何修复CORS错误?,java,angular,cors,httpclient,httpserver,Java,Angular,Cors,Httpclient,Httpserver,我有一个发帖请求: getLagTimestamp() { const headers = new HttpHeaders({ 'Access-Control-Allow-Origin': '*', 'Authorization': 'Basic YWRtaW46cGFzc3dvcmQ=' }); this.response = this.http.post(this.url, '{"method":"topics_lag&quo

我有一个发帖请求:

getLagTimestamp() {
    const headers = new HttpHeaders({
      'Access-Control-Allow-Origin': '*', 'Authorization': 'Basic YWRtaW46cGFzc3dvcmQ='
    });
    this.response = this.http.post(this.url, '{"method":"topics_lag","id":"req-id-01","jsonrpc":"2.0"}', {headers:headers})
      .subscribe((response) => {
        this.response = response;
        this.lagTimestamps = Object.setPrototypeOf(this.response, Array<LagTimestampObject>());
        console.log(this.lagTimestamps);
      });
  }
但我对前端和后端之间的请求有一些问题:

访问位于“”的XMLHttpRequesthttp://localhost:9099/rpc"从源头上说, 'http://localhost:4200'已被CORS策略阻止:响应 飞行前请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源

我试着像这样使用前端代理:

{
  "/rpc": {
    "target": "https://localhost:9099",
    "secure": true,
    "pathRewrite": {
      "^/rpc": ""
    },
    "changeOrigin": true
  }
}
我已经试着解决这个问题一个星期了,但没有任何行动能帮上忙。 如何解决这个问题

谢谢

添加: 在后端更新后:

if (httpExchange.getRequestMethod().equalsIgnoreCase("OPTIONS")) {
   httpExchange.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, OPTIONS");
   httpExchange.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization");
    httpExchange.sendResponseHeaders(200, -1);
}
我有:

您需要飞行前响应(选项呼叫响应)来返回
“访问控制允许原点”,“*”

您正在从服务器获得401未经授权的选项呼叫。
查看允许选项调用并在此处返回标题
“Access Control Allow Origin”、“*”

修复程序是配置
http://localhost:9099/rpc
允许未经验证的选项请求的端点。目前,它似乎希望在CORS飞行前选项请求中找到授权标头,但浏览器故意在飞行前不发送授权标头或任何其他凭据。因此服务器响应401错误,因为它找不到预期的凭据。要获得更详细的解释,请参阅我添加的if(httpExchange.getRequestMethod().equalsIgnoreCase(“选项”){httpExchange.sendResponseHeaders(200,3);}上的答案,但是如果我使用Postman,它会起作用。它在浏览器中不起作用。魔法。我试图修复它,结果是除了问题。表示飞行前准备现在已成功。所以这个问题现在已经解决了。但是您有一个新的/不同的问题:POST请求失败,并带有NS\u ERROR\u DOM\u BAD\u URI。因为你已经解决了飞行前的问题,而这个新问题是一个非常不同的问题,你可能想为它发布一个新的/单独的问题。你能更详细地描述一下如何做到这一点吗?你需要确保任何选项请求都不受你的授权过滤器的约束。让它在标题中返回访问控制允许原点。
if (httpExchange.getRequestMethod().equalsIgnoreCase("OPTIONS")) {
   httpExchange.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, OPTIONS");
   httpExchange.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization");
    httpExchange.sendResponseHeaders(200, -1);
}