Access-control-allow-origin отсутствует в URL авторизации Okta - PullRequest
0 голосов
/ 16 ноября 2018

Я разрабатываю службы отдыха и использую их с помощью ajax.

Теперь я защитил свой веб-сервис с помощью okta, и он работает хорошо, когда я вызываю из chrome или любого браузера.Но если я попытался использовать Jquery / ajax, я получаю ошибку ниже.Может ли кто-нибудь, пожалуйста, помогите в этом.

Я использовал Python, колба для разработки веб-сервисов и использовал OpenIdConnect (flask_oidc) для аутентификации.Кусок кода

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

Код Jquery Ajax:

$.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();
            }               
    });

Если я вызываю https: /// ai / docsearchStatus, он работает правильно (Перенаправление - аутентификация - получен ответ),Когда я пытался из ajax, я получаю ниже URL: Ошибка:

  Failed to load https://mycompany.okta.com/oauth2/ausl2cu6foKJx4WXS0x7/v1/authorize? Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘https://example.com’ is therefore not allowed access.

Может ли кто-нибудь помочь в этом.Я даже настроил https://example.com в okta admin через API> Trusted Origins.

1 Ответ

0 голосов
/ 17 ноября 2018

Вам необходимо определить доверенного источника в Okta.

В консоли администратора Okta перейдите по адресу: Безопасность -> API и выберите вкладку Надежное происхождение.

Затем можно определитьдоверенное происхождение для CORS.

Полное раскрытие: я работаю на Okta.

...