使用JavaSpring引导时,Angular 12上的CORS无效

kpbwa7wx  于 2022-10-23  发布在  Java
关注(0)|答案(2)|浏览(141)

我有一个ANGLE应用程序,它使用代理来访问Java Spring引导后端和其他服务:
Proxy.conf.js:

const PROXY_CONFIG = [
  {
    context: [
        "/my/api/context/**"
    ],
    target: "http://localhost:9000/",
    headers: {
        "Content-Type": "application/json"
    },
    secure: false,
    logLevel: "debug",
    changeOrigin: true,
  },
  ...
}]

module.exports = PROXY_CONFIG;

MyController.java:

@RestController
@RequestMapping("/my/api/controller/path")
public class MyController {
    ...
    @PostMapping("/endpoint/{id}")
    public ResponseEntity<Boolean> endpoint(@PathVariable Long id) {
        ...
    }
    ...
}

我还在使用ZooKeeper进行一些环境配置。
问题是,对于GET请求,我的Angular 应用程序运行得很好,但对于任何其他动词,我从Spring Boot收到一个403 Forbidden错误和一条Invalid CORS request消息。奇怪的是,当我复制带有所有头的请求并通过Postman提交时,我得到了一个200响应,没有任何问题。
网上有很多关于这个问题的问题,但似乎都指向一个后端问题。在本例中,后端似乎配置良好( Postman 请求成功)。
我确信我错过了一些微不足道的东西,但我就是摸不着头脑。有人知道这里会出什么问题吗?如有任何帮助或建议,我们将不胜感激。如果你还需要什么,尽管告诉我,我看看能不能告诉你。

编辑#1:

My.service.ts:

myPost(id: number): Observable<any> {
  return this.http.post<any>(`${this.endpoint}/${id}`);
}
8nuwlpux

8nuwlpux1#

只需添加
@CrossOrigin
在您的控制器类上,它应该可以解决这个问题。

zfycwa2u

zfycwa2u2#

我只需要设定:

changeOrigin: false,

而且它起作用了。

相关问题