角删除从服务器获取数据的CORS错误

时间:2019-05-16 15:37:11

标签: javascript java ajax angular

我的应用程序基于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一侧进行更改来解决此问题?

1 个答案:

答案 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/

致谢