javascript - 本地主机上的 Angular2 CORS 问题

标签 javascript java angular cors

Failed to load URL: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

是否可以在不更改服务器端(Java Spring Controller )中的代码的情况下从 Angular2 修复此问题?

我的代码

const headers = new Headers({'Content-Type': 'application/json',
    'Access-Control-Allow-Origin' : '*'
});
return this.http.get(url, {headers: headers})
  .toPromise()
  .then(response => response.json().data as Hero[])
  .catch(this.handleError);

最佳答案

您的后端似乎不接受跨域请求。

为了让它在 Angular 上工作,您必须使用代理,以便您的前端和后端使用相同的域(相同的主机名和相同的端口)

在开发模式下,您可以使用 proxy.config.json 文件设置代理。假设您的后端托管在 your-domain.com:80 上,并且您的后端请求以 /backend 开头,则此文件将包含类似

{
    "/backend/*":{
        "target": "your-domain.com",
        "secure": false,
        "logLevel": "debug"
    }
}

通过更改 package.json 中的以下配置,让您的开发 HTTP 服务器使用此文件

 "scripts": {
    "start": "ng serve --proxy-config proxy.config.json",
  }

不要忘记使用诸如 http://localhost:4200/backend/... 而不是 http://your-domain.com/之类的请求来调用后端。 ..

为了让它在远程服务器上工作,您必须在 Java Web 应用程序(例如 nginx 或 Apache)上设置一个 HTTP 服务器,并配置为执行与前面所述相同的操作。

关于javascript - 本地主机上的 Angular2 CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108858/

相关文章:

javascript - blend 2012 - 不要在后台运行整个应用程序

javascript - 禁用所选选项后 select2 未更新

Java Socket 不返回流中的任何内容

Angular 4 : http interceptor emit events to other components?

javascript - <body> 最右侧的特殊行为

javascript - 单击链接工作时无法在 div 的两种颜色之间切换

java Swing : in paintComponent method how to know what to repaint?

java - 通过过滤器以使用 JAVA 中的 ksoap2 库从 magento 检索特定的客户列表集

javascript - Angular 2 RouterStateSnapshot 未返回正确的 url

node.js - 如何在 Angular 2 组件中使用 require ('os' ) 来获取 IP 地址?