请求的资源上不存在“Access-Control-Allow-Origin”标头。 403 禁止

Posted

技术标签:

【中文标题】请求的资源上不存在“Access-Control-Allow-Origin”标头。 403 禁止【英文标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource. 403 forbidden 【发布时间】:2019-10-10 23:08:05 【问题描述】:

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

我已将 cors 安装到我的工作区。甚至在弹簧控制器中启用。之前也有同样的代码,突然就开​​始报这个错误了

403 禁止

【问题讨论】:

检查这个:***.com/questions/13421463/… 这是一个 CORS 错误。你应该了解更多关于 cors What Is CORS 的信息。您必须更改服务器属性才能访问 api。 安装谷歌CORS扩展然后尝试访问本地主机 @kashif 这不是解决方案您希望您的客户和客户安装 CORS 扩展吗?在开发过程中可以使用代理支持,最终您需要配置服务器以接受应用程序的请求。 分享你开启CORSHow to create a Minimal, Reproducible Example的代码 【参考方案1】:

来自文档

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
    
    "api/*": 从您的应用程序中向/api/ 发出的所有请求都将转发到 target": "https://localhost:8000/api

    "secure": false,: 在 HTTPS 上运行的后端服务器 默认不接受无效证书。如果你想, 你需要设置secure: false

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

    "pathRewrite": "^/api": "" , pathRewrite 设置表示如果路径匹配 ^/api(即如果它以 /api 开头)则用空字符串重写该部分(即从路径中删除它),因此对 https://localhost:8000/api 的所有请求将转到 @987654344 @

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

    `目标:

此包中提供的代理options来自底层node-http-proxy

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

注意

proxy 配置旨在在运行 开发服务器通过ng serve。在你运行ng build 之后,你是 负责网络服务器及其配置。

【讨论】:

以上是关于请求的资源上不存在“Access-Control-Allow-Origin”标头。 403 禁止的主要内容,如果未能解决你的问题,请参考以下文章

django中的“请求的资源上不存在'Access-Control-Allow-Origin'标头”

如何解决请求的资源上不存在“Access-Control-Allow-Origin”标头

Http.post 请求的资源上不存在“Access-Control-Allow-Origin”标头

请求的资源发布请求上不存在“Access-Control-Allow-Origin”标头

Angular 2请求的资源上不存在“Access-Control-Allow-Origin”标头[重复]

API 请求错误 - 请求的资源上不存在“Access-Control-Allow-Origin”标头