我试图通过WSO2 API管理器通过Swagger UI使用我的API:Me-> Browser-> SwaggerUI-> WSO2-> MyBackend

现在我遇到了问题,Swagger UI总是给我:

{  "error": "no response from server" }

我正在做一些研究并发现,这里的问题与CORS有关 . 当我尝试GET请求时,Firefox首先发送一个OPTION请求(因为CORS)到WSO2网关 .

现在,这里也解释和描述了相同的场景:

https://wso2.org/jira/browse/APIMANAGER-1819

链接中描述的解决方案/解决方法是,在API发布者中,您必须使用方法OPTION为所请求的资源创建 endpoints ,并将该OPTION endpoints 的auth类型设置为“none” .

但是这对我来说不起作用,因为我在WSO中得到了一个例外,当请求被传入时 .

  • 进入WSO2的HTTP请求:

TID:[0] [AM] [2015-05-07 09:32:50,707] DEBUG - >>“OPTIONS / bankapi / v1 / cashAccounts HTTP / 1.1 [ \ r] [\ n] TID:[0] [AM] [2015-05-07 09:32:50,707] DEBUG - >>“主持人:10.88.13.104:8243 [\ r] [\ n]”“ TID:[0] [AM] [2015-05 -07 09:32:50,707] DEBUG - >>“User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:37.0)Gecko / 20100101 Firefox / 37.0 [\ r] [\ n] TID:[0] [AM] [2015-05-07 09:32:50,707] DEBUG {org.apache.synapse . transport.http.wire} - >>“接受:text / html,application / xhtml xml,application / xml; q = 0.9,/; q = 0.8 [\ r] [\ n]”{org.apache.synapse . transport.http.wire} TID:[0] [AM] [2015-05-07 09:32:50,708] DEBUG - >>“Accept-Language:en- US,en; q = 0.5 [\ r] [\ n] TID:[0] [AM] [2015-05-07 09:3 2:50,708] DEBUG - >>“Accept-Encoding:gzip,deflate [\ r] [\ n] TID:[0] [AM] [2015-05-07 09:32:50,708] DEBUG - >>“来源:http://10.88.13.104:8080 [\ r] [\ n] TID:[0] [AM] [2015-05-07 09:32:50,708] DEBUG {org.apache.synapse . transport.http.wire} - >>“Access-Control-Request-Method:GET [\ r] [\ n] TID:[0] [AM] [ 2015-05-07 09:32:50,708] DEBUG - >>“Connection:keep-alive [\ r] [\ n]”{org.apache.synapse . transport.http.wire} TID:[0] [AM] [2015-05-07 09:32:50,708] DEBUG - >>“[\ r] [\ n] n]“

  • 异常和堆栈跟踪:

TID:[0] [AM] [2015-05-07 09:32:50,878] ERROR - API身份验证失败{org.wso2.carbon . apimgt.gateway.handlers.security.APIAuthenticationHandler} org.wso2.carbon.apimgt.gateway.handlers.security.APISecurityException:API的访问失败:/ bankapi,版本:v1,密钥:null,位于org.wso2.carbon.apimgt . 在org.apache.synapse的org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler.handleRequest(APIAuthenticationHandler.java:94)上的gateway.handlers.security.oauth.OAuthAuthenticator.authenticate(OAuthAuthenticator.java:212) . org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:64)中的org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:83)上的rest.API.process(API.java:284) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(Syn apseMessageReceiver.java:83)org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)org.apache中的org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:344) .synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)位于java.util.concurrent.ThreadPoolExecutor的org.apache.axis2.transport.base.threads.NativeWorkerPool $ 1.run(NativeWorkerPool.java:172) . runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:724)

这里重要的是2 ....即使auth类型为none并且身份验证应该始终进行身份验证,也会出现错误成功的 . 请求甚至没有转发到后端(这就是为什么我的问题不是重复,但是存在一个非常不同的问题) .

我在Windows上运行版本1.8.0中的WSO2 API Manager(可以在WSO2站点上下载的二进制包) . 你能帮帮我吗?我错过了什么吗?这是一个普通的错误(它看起来像那样)?