所请求的资源上没有“ Access-Control-Allow-Origin”标头。 403禁止

时间:2019-05-24 10:43:28

标签: angular spring-mvc

从原点“ http://localhost:8080/spring-mvc-restfull-crud-example/adduser”到“ http://localhost:4200”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。

我已将cors安装到我的工作区中。甚至在弹簧控制器中启用。并且相同的代码之前起作用,突然间它开始出现此错误

403禁止

1 个答案:

答案 0 :(得分:0)

来自文档

  

Angular开发人员可能会遇到 cross-origin resource sharing error   向服务提供商发出服务请求(通常是数据服务请求)时   应用程序自己的主机服务器以外的服务器。浏览器禁止   除非服务器明确允许,否则此类请求。

     

客户端应用程序无法解决这些错误。   必须将服务器配置为接受应用程序的请求。   在 enable-cors.org

上了解如何为特定服务器启用CORS。

要在Spring上启用CORS,您可以参考 CORS with Spring

替代方法
Proxy To Backend Setup

为Angular CLI应用设置API调用的代理

"/api/*": {
      "target": "https://localhost:8000",
      "secure": false,
      "logLevel": "debug",
      "pathRewrite": {
        "^/api": ""
      },
      "changeOrigin": true
    }
  1. "api/*"
    您在应用程序中对/api/的所有请求都将转发到 target": "https://localhost:8000/api
  2. "secure": false,
    在HTTPS上运行的后端服务器 默认情况下,无效证书将不被接受。如果你想, 您需要设置secure: false

  3. "logLevel": "debug"
    帮助调试您的代理是否 工作正常,您还可以将logLevel选项添加为 如下:logLevel的可能选项包括debuginfowarnerrorsilent(默认为info)。

  4. "pathRewrite": { "^/api": "" },    pathRewrite设置指出,如果路径与^/api相匹配(即,它以/ api开头),则用空字符串重写该部分(即,将其从路径中删除),因此对https://localhost:8000/api的所有请求都将转到https://localhost:8000

  5. "changeOrigin": true:如果您需要访问不在localhost上的后端,或者在后端上使用某些虚拟代理(例如使用Apache2配置的虚拟代理)时,请将其设置为true。 p>

  6. `目标:
此软件包中提供的

代理options来自基础node-http-proxy

代理支持可能会帮助您在开发阶段摆脱一些 CORS 异常,但是客户端应用程序无法对这些异常做很多事情服务器必须配置为接受应用程序的请求。
I want to add CORS support to my server

注意

  

proxy配置用于在运行   ng serve开发服务器。运行ng build后,您将   负责Web服务器及其配置。