CORS问题与Keyrock
问题描述:
我正在尝试将自定义应用程序与Keyrock Fiware Identity Manager集成。 流动如下:CORS问题与Keyrock
- 上登录按钮用户点击
- 他被重定向到
/的oauth2 /授权/ RESPONSE_TYPE =代码& CLIENT_ID = {的clientid}? &状态= XYZ & REDIRECT_URI = HTTP:{IP}:{端口}
- 用户将其凭据
- 他被重定向到我的应用程序的认证后,我试着检索令牌如下:
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;
}
});
但POST请求从不因为我收到:
XMLHttpRequest无法加载ht TP:// {IP}:{端口} /的oauth2 /令牌。请求标头字段预检响应中的Access-Control-Allow-Headers不允许Access-Control-Allow-Methods。
我试着将{ip}:{port}插入到Keyrock的local_settings.py文件中的CORS_WHITELIST和ALLOWED_HOST,但没有任何更改。
任何人都可以帮到我吗?
答
讽刺的是,我认为这个问题是由事实,你正在使用的CORS头意味着在你的请求响应造成的:
- 访问控制允许报头
- 接入控制 - 允许-方法
- 访问控制允许来源
- 访问控制 - 暴露 - 接头
因此预检失败b因为服务器不允许使用这些标签,只有响应标题Access-Control-Allow-Headers中提供的标题的子集。
从请求中删除这些。
欲了解更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
你说得对。 删除这些字段一切都很好。谢谢。 – sirnino