Keyrock 的 CORS 问题
Posted
技术标签:
【中文标题】Keyrock 的 CORS 问题【英文标题】:CORS issue with Keyrock 【发布时间】:2017-04-22 11:23:52 【问题描述】:我正在尝试将自定义应用程序与 Keyrock Fiware Identity Manager 集成。 流程如下:
用户点击登录按钮 他被重定向到用户插入他的凭据 身份验证后,他被重定向到我的应用程序,我尝试在其中检索令牌,如下所示:/oauth2/authorize/?response_type=code&client_id=clientid&state=xyz&redirect_uri=http:ip:port
var reqData = "grant_type=authorization_code&code=" + code + "&redirect_uri=" + http:ip:port;
var reqHeaders = new Object();
reqHeaders.Access-Control-Allow-Headers= "Content-Type, Access-Control-Allow-Headers,Access-Control-Allow-Origin, Authorization, X-Requested-With, origin, accept",
reqHeaders.Access-Control-Allow-Methods= "POST, GET, OPTIONS, DELETE, PUT",
reqHeaders.Access-Control-Allow-Origin="*"
reqHeaders.Access-Control-Expose-Headers="http://*/*"
reqHeaders.Authorization="Basic token"
reqHeaders.Content-Type="application/x-www-form-urlencoded"
reqHeaders.X-Requested-With="XMLHttpRequest"
$.ajax(
url : idmURL + '/oauth2/token',
type : 'POST',
dataType : 'json',
crossDomain : true,
data : reqData,
headers : reqHeaders,
success : function(data)
console.log(data);
token = data.access_token;
);
但是因为我收到了,所以发布请求永远不会开始:
XMLHttpRequest 无法加载 http://ip:port/oauth2/token。预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Methods。
我尝试将 ip:port 插入到 Keyrock 的 local_settings.py 文件中的 CORS_WHITELIST 和 ALLOWED_HOST 中,但没有任何变化。
谁能帮帮我?
【问题讨论】:
【参考方案1】:具有讽刺意味的是,我认为问题是由于您在请求中使用了用于响应的 CORS 标头:
访问控制允许标头 访问控制允许方法 访问控制允许来源 访问控制公开标头因此预检失败,因为服务器不允许这些,只有响应标头 Access-Control-Allow-Headers 中提供的标头子集。
从请求中删除这些。
欲了解更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
【讨论】:
你是对的。删除这些字段一切正常。谢谢。以上是关于Keyrock 的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章