错误 - 预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头
Posted
技术标签:
【中文标题】错误 - 预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头【英文标题】:Error- Preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource 【发布时间】:2019-02-24 17:38:54 【问题描述】:我正在尝试从 Angular 应用程序调用安全的休息 API。这个 REST API 在 WAS 上运行,它正在验证 JWT 令牌。在谷歌浏览器中运行应用程序时,出现以下错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。原点'http://localhost:4200' 因此不允许访问。
相同的调用在 IE 和 postman 中运行良好。你能帮帮我吗?
【问题讨论】:
【参考方案1】:您的服务器需要在其响应中指定正确的 CORS 标头。
见https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
只有浏览器强制执行 CORS,这就是它在 POSTMAN 中有效的原因,不确定为什么它在 IE 中有效
另见Why does my javascript get a "No 'Access-Control-Allow-Origin' header is present on the requested resource" error when Postman does not?
如果每次有人问这个问题我都有一磅。
【讨论】:
这是因为 Chrome 在您指定的请求之前发送了OPTIONS
请求。需要将服务器配置为允许该方法的 CORS。
我的 Rest API 在 IBM WebSphere 8.0.4 上运行你能分享在上面配置 CORS 的步骤吗?
将这些标头添加到所有响应中... Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT - 注意这允许任何客户端来自它的请求 - 您可能希望对其进行更多限制,但这应该可以帮助您入门 - 我以前从未使用过 IBM,因此无法提供有关如何配置它的详细信息
好的,我在包装器中有数百个 API。有什么方便的方法可以解决这个问题吗?有谁可以告诉我如何在 websphere 服务器上配置 CORS?
针对该问题专门提出一个新问题以上是关于错误 - 预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章
请求的资源上不存在“Access-Control-Allow-Origin”标头。或 对预检请求的响应未通过访问控制检查
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
在禁用 Web 安全模式下运行的 chrome 中,对预检请求的响应未通过访问控制检查
AWS - 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头
.NET 5 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头