gpt4 book ai didi

angularjs - 无法通过 AngularJS 请求 WSO2 API(激活 CORS)

转载 作者:行者123 更新时间:2023-12-02 04:05:31 24 4
gpt4 key购买 nike

当我的客户端 AngularJS 应用程序尝试访问通过 WSO2 API Manager (v2.0.0) 公开的某些 REST API 时,我收到此响应(IP、端口替换为“am_host”和“am_port”):

Refused to set unsafe header "Origin"
XMLHttpRequest cannot load http://am_host:am_port/ReferentielInfoConso/offres-tarifaires/identifiants. 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:8000' is therefore not allowed access.

当我在 Chrome 开发者工具中检查 header 时,我可以确认“Access-Control-Allow-Origin” header 不存在于“OPTIONS”请求的响应中。

header_chrome

当我在 Chrome 高级 REST 客户端中使用相同的 HTTP 方法 (GET/ReferentielInfoConso/offres-tarifaires/identifiants HTTP/1.1) 请求相同的网址时,我可以看到预期的 header “Access-Control-Allow-Origin”,并且我可以访问资源:

capture_rest_client

那么我应该怎么做才能让它在我的 AngularJS 应用程序中工作(不创建 Node.js 后端,我需要保持它非常轻)?为什么在 WSO2 中启用 CORS 还不够?

编辑:如果我的 AngularJS 应用程序直接向 Tomcat 7 端点请求 API(默认情况下启用 CORS),而不通过 WSO2 AM,则它可以完美运行。

编辑2:当我的AngularJS应用程序尝试在不发送授权 token 的情况下访问WSO2 API时,我收到401响应,其中包括预期的“Access-Control-Allow-Origin” header 。一旦我添加 token ,它看起来就像通过 WSO2 AM 遵循不同的路线,并且我没有收到“Access-Control-Allow-Origin” header 。

编辑3:如果我有一个“Autorization” header 并尝试直接到达我的 Tomcat 7 后端,我也会遇到“跨源”问题,但我猜这是因为“Authorization” header 不在 header 列表中Tomcat 配置中允许。不过,它位于 WSO2 AM 允许的 header 列表中(我添加了“授权”和“授权”以确保它能够正常工作)。

最佳答案

如果您没有在 API Publisher UI 的资源列表中定义 OPTIONS 方法,APIM 应发送所有 CORS header ,如 api-manager.xml 中指定的那样。

另请注意,您可以从发布者 UI 中为每个 API 定义 CORS 配置。如果您已进行配置,则该特定 API 会忽略 api-manager.xml 中给出的 CORS 配置。

如果您的后端启用了 CORS,您也可以向后端发送 OPTIONS 请求。为此,您可以在 API Publisher 中为 /* OPTIONS 创建资源。

关于angularjs - 无法通过 AngularJS 请求 WSO2 API(激活 CORS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39772516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com