Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确处理基于Spring的restapi的跨原点(CORS)_Java_Angularjs_Spring_Rest_Cors - Fatal编程技术网

Java 如何正确处理基于Spring的restapi的跨原点(CORS)

Java 如何正确处理基于Spring的restapi的跨原点(CORS),java,angularjs,spring,rest,cors,Java,Angularjs,Spring,Rest,Cors,我正在开发一个前端和后端完全解耦的应用程序。前端是使用Angular实现的,后端是使用Spring在Java中实现的。两者之间的通信是通过Spring管理的RESTAPI完成的。除此之外,我们还有一个外部第三方应用程序也使用这个RESTAPI。因此,API有两个用途:(1)作为“通用”API用于不确定数量的客户端;(2)作为专门设计用于满足角度前端要求的非常特定的API。我们有单独的控制器来处理单独的问题 我遇到的问题是CORS。目前,我刚刚用@CrossOrigin对控制器进行了注释,现在还可

我正在开发一个前端和后端完全解耦的应用程序。前端是使用Angular实现的,后端是使用Spring在Java中实现的。两者之间的通信是通过Spring管理的RESTAPI完成的。除此之外,我们还有一个外部第三方应用程序也使用这个RESTAPI。因此,API有两个用途:(1)作为“通用”API用于不确定数量的客户端;(2)作为专门设计用于满足角度前端要求的非常特定的API。我们有单独的控制器来处理单独的问题

我遇到的问题是CORS。目前,我刚刚用
@CrossOrigin
对控制器进行了注释,现在还可以,但在我们上线之前,我需要一个更安全的解决方案。我知道,当允许跨源请求时,您可以指定要限制的特定域,但是,这对我不起作用。如果我们只考虑角度前端,那么外部客户怎么办呢?这些域是未知的。我几乎需要某种机制让客户端在运行时进行身份验证和注册,然后只有这些注册的客户端才能执行跨源请求


这就是我要问的:鉴于上述情况,我的问题的最佳解决方案是什么?我需要一个解决方案,以防止跨网站的请求伪造,以及满足我的要求前面所述

您好,在前端应用程序中创建一个rest控制器作为后端服务的代理怎么样?基本上,前端会调用本地主机,控制器会调用远程后端服务?@Seb这并不能真正解决我的问题,你只关注问题的web前端部分-这实际上是更容易解决的部分,因为该域是已知的,所以我无法在应用程序启动时向CorsFilter注册它。除非您建议外部客户端调用web应用程序,以便访问我的后端Rest API——这绝对不是一种方式,因为基本上是耦合的。如果web前端关闭,后端Rest API应该仍然可以访问。或者我完全误解了你的建议(??)是的,我把注意力集中在前端。我的错。外部客户端是否需要访问与您的前端相同的服务?@Seb不完全相同,可能会有一些重叠,但目前没有。这看起来像您所说的身份验证+白名单方法: