Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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
Angular2,REST服务呼叫后错误:";跨来源请求被阻止”;_Rest_Angular - Fatal编程技术网

Angular2,REST服务呼叫后错误:";跨来源请求被阻止”;

Angular2,REST服务呼叫后错误:";跨来源请求被阻止”;,rest,angular,Rest,Angular,我试图使用Angular 2(版本4.0.0)从开发环境(localhost:4200)调用REST API 正在获取以下错误消息: “跨源请求被阻止:同一源策略不允许在读取远程资源。(原因:CORS标头“访问控制允许源”丢失)。” 这里我提供了一个代码示例供参考: var headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8'); ret

我试图使用Angular 2(版本4.0.0)从开发环境(localhost:4200)调用REST API

正在获取以下错误消息: “跨源请求被阻止:同一源策略不允许在读取远程资源。(原因:CORS标头“访问控制允许源”丢失)。”

这里我提供了一个代码示例供参考:

var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');

return this.http.post(this.loginUrl, 'POST_Parameters', {
       headers: headers
}).map(res => {
       console.log(res);
});

有人能帮我找到这个问题的解决方案吗?

后端必须启用CORS。根据后端框架的不同,通常必须发送后端可以识别的特定标头。但是,除非您在后端明确启用CORS支持,否则发送标头对我的项目来说是无用的。我刚刚访问了我的服务器(linux 16.04上的apache2),并且根据浏览器策略,我刚刚在虚拟服务器配置文件上添加了“标头集访问控制允许来源”*”

,CORS是不允许的。如果您使用的是邮递员,则不会发生此错误

CORS错误只应由服务器端删除。因此,您应该在后端代码中设置头

如果您使用express作为后端

app.use(function(req,res){
    res.header('Access-Control-Allow-Origin', '*');});

您在本地服务器中。您需要在同一台服务器上运行api和angular应用程序。
当您在同一台生产服务器上上载项目时,我希望不会显示此错误。

可能重复,但根据此处的场景,我无法控制REST服务,客户端为我们提供了需要调用的服务。这就是全部。就连我自己也不知道创建服务的平台。如果有任何工作,获得服务的响应将是很大的帮助。