我的应用程序基于Angular + NGRX构建,从服务器获取数据。 服务器托管基于Java Spring构建的服务。
Spring服务托管在特定的域中,因此在角度上,我们使用特定的网址说来访问它们
http://JavaService-hostedDomain/ServiceName
在春季,为它们@GetMapping(/ServiceName)
构建了特定的控制器
现在我面临的问题是要查看该应用程序,我必须使用
禁用chrome web安全性 --disable web security chrome command to launch chrome
,然后应用程序正确加载。
在chrome中运行但未禁用Chrome网络安全性时,出现以下错误
XMLHttpRequest cannot load http://localhost:4200/url. Response to
preflight request doesn't pass access control check: No
'Access-Control-Allow-Origin' header is present on the requested resource.
如何解决上述CORS错误,是否需要在Angular(客户端)或Java(服务器端)上进行更改?
是否有可能通过仅在Angular一侧进行更改来解决此问题?
答案 0 :(得分:0)
我多次遇到该问题,并且必须从服务器端解决该问题,因为我不了解Java,但是您需要设置可以接受哪些来源来向您的服务器发出请求,因为浏览器会阻止所有安全性尝试
例如在Laravel(PHP)中,我安装了一个库,该库按以下方式管理CORS:
/*
|--------------------------------------------------------------------------
| Laravel CORS
|--------------------------------------------------------------------------
|
| allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
| to accept any value.
|
*/
'supportsCredentials' => false,
'allowedOrigins' => ['*'], // HOST allowed for making request
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['*'],
'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
'exposedHeaders' => [],
'maxAge' => 0,
'hosts' => ['*']
我希望以上内容能给您一个想法
在java spring中检查以下内容: https://spring.io/guides/gs/rest-service-cors/
致谢