wso2 api manager TypeError: NetworkError when attempting to fetch resource

wso2 api manager TypeError: NetworkError when attempting to fetch resource

我在 wso2 api manager 3.2.0 devportal 中遇到以下错误,但是当调用 Postman 或 Curl 不安全时,没关系。

wso2 api manager TypeError: NetworkError when attempting to fetch resource

在浏览器中

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource 

在发布者 portal > Runtime Configuration 中:

启用 CROS 配置

默认情况下,网络浏览器应用 same-origin 策略来避免不同来源之间的交互。 CORS 定义了一种方式,浏览器和服务器可以通过这种方式进行交互,以确定允许 cross-origin 请求是否安全。这就是您在浏览器中收到下面提到的错误的原因。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource

你可以用两种方法解决这个问题。具体如下。

  1. 全局启用 CORS
  2. 根据 API
  3. 启用 CORS

全局启用 CORS

正如标题所说,您可以全局 enable/disbale CORS 配置,它将应用于所有 API。你可以通过在 /repository/conf/deployment.toml 文件中添加以下配置来实现。默认启用 CORS 配置。

[apim.cors]
enable = true
allow_origins = "*"
allow_methods = ["GET","PUT","POST","DELETE","PATCH","OPTIONS"]
allow_headers = ["authorization","Access-Control-Allow-Origin","Content-Type","SOAPAction","apikey","testkey"]
allow_credentials = false

在 API 网关应用此配置后,它将影响网关服务的所有 API 呼叫。

根据 API

启用 CORS

您也可以通过发布者门户 enable/disable CORS 配置。 为此,登录发布者门户 --> select API --> 运行时配置 --> 在 CORS 配置下启用切换按钮,为 API 启用 CORS .

注意:您需要先全局启用 CORS,然后再启用 CORS Per API。

使用 Swagger 或 Open API 定义创建新的 API 时,可以通过定义 API-M 支持的 Open API 扩展来设置 CORS “x-wso2-cors”.

x-wso2-cors: 
    corsConfigurationEnabled: true
    accessControlAllowOrigins: 
        - "*"
    accessControlAllowCredentials: false
    accessControlAllowHeaders: 
        - "authorization"
        - "Access-Control-Allow-Origin"
        - "Content-Type"
        - "SOAPAction"
        - "apikey"
    accessControlAllowMethods: 
        - "GET"
        - "PUT"
        - "POST"
        - "DELETE"
        - "PATCH"
        - "OPTIONS"