【问题标题】:Error- Preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource错误 - 预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2019-02-24 17:38:54
【问题描述】:

我正在尝试从 Angular 应用程序调用安全的休息 API。这个 REST API 在 WAS 上运行,它正在验证 JWT 令牌。在谷歌浏览器中运行应用程序时,出现以下错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。原点'http://localhost:4200' 因此不允许访问。

相同的调用在 IE 和 postman 中运行良好。你能帮帮我吗?

【问题讨论】:

    标签: angular rest jwt was


    【解决方案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?
    • 针对该问题专门提出一个新问题
    猜你喜欢
    • 2017-10-11
    • 2016-02-23
    • 2018-05-06
    • 1970-01-01
    • 2016-08-04
    • 2016-02-22
    • 2017-11-11
    • 2017-04-09
    • 2017-09-08
    相关资源
    最近更新 更多