Okta授权URL中不存在access-control-allow-origin

时间:2018-11-16 20:55:05

标签: jquery ajax flask okta oidc

我正在开发休息服务,并通过ajax进行使用。

现在,我已经用okta保护了我的Web服务,并且当我从chrome或任何浏览器中调用时,它都能正常工作。但是,如果我尝试从Jquery / ajax中使用数据,则会遇到错误。有人可以帮忙吗?

我已经使用python,flask开发了Web服务,并使用了OpenIdConnect(flask_oidc)进行身份验证。  代码段

std::array

jQuery Ajax代码:

app = Flask(__name__)
app.config["OIDC_CLIENT_SECRETS"] = 
  services_dir+"okta/client_secrets.json"
app.config["OIDC_COOKIE_SECURE"] = False
app.config["OIDC_CALLBACK_ROUTE"] = "/oidc/callback"
app.config["OIDC_SCOPES"] = ["openid", "profile"]
app.config["SECRET_KEY"] = "********"
app.config['CORS_HEADERS'] = 'Content-Type'

oidc = OpenIDConnect(app)
cors = CORS(app, resources={r"/ai/*": {"origins": "*"}})


 @app.before_request
 def before_request():
     print("Before request",oidc.user_loggedin)
     if oidc.user_loggedin:
         #print("access token",oidc.get_access_token())
         print("sub",oidc.user_getinfo(["name"]))
         g.user = oidc.user_getfield("name")
     else:
         g.user = None  


@app.route('/ai/docsearchStatus', methods = ['GET'])
@cross_origin(origin='*')
@oidc.require_login
def getHealthstatus():
    response = {}
    response['user'] = g.user
    response=json.dumps(response); 
    return response

如果我呼叫https:/// ai / docsearchStatus,则它工作正常(重定向-身份验证-得到响应)。 当我尝试从ajax进入以下URL时:     错误是:

$.ajax({     
        type:"GET",     
        url: "https://https://example.com/ai/docsearchStatus", 

        beforeSend: function(xhr) {
            xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
            xhr.setRequestHeader("Accept", "application/json");
            xhr.setRequestHeader("Content-Type", "application/json");
        },
        success:function(data, textStatus, XMLHttpRequest){


        },     
        error:function(XMLHttpRequest, textStatus, errorThrown){ 
            //fnHideLoader();
            }               
    });

任何人都可以帮忙。我什至通过API>受信任的来源在okta admin中配置了https://example.com

1 个答案:

答案 0 :(得分:1)

您需要在Okta中定义可信来源。

在Okta管理控制台中,浏览至:安全-> API,然后选择“可信来源”标签。

然后您可以为CORS定义可信来源。

完全公开:我为Okta工作。