令牌请求到docker后面的KeyClope,curl工作,reactjs不工作
以下情况: KeyClope服务器是使用docker compose()设置的 当我这样做时:令牌请求到docker后面的KeyClope,curl工作,reactjs不工作,curl,docker,cors,keycloak,docker-for-windows,Curl,Docker,Cors,Keycloak,Docker For Windows,以下情况: KeyClope服务器是使用docker compose()设置的 当我这样做时: curl --data "grant_type=password&client_id=account&username=dr&password=dr" http://127.0.0.1:8083/auth/realms/xxx/protocol/openid-connect/token 它起作用了 然后我尝试在react.js上执行以下操作: axios.post(kc.a
curl --data "grant_type=password&client_id=account&username=dr&password=dr" http://127.0.0.1:8083/auth/realms/xxx/protocol/openid-connect/token
它起作用了
然后我尝试在react.js上执行以下操作:
axios.post(kc.authServerUrl + "/realms/xxx/protocol/openid-connect/token", {
grant_type: 'password',
client_id: 'account',
username: 'dr',
password: 'dr'
}
)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
而且它不起作用。我得到以下信息:
axios.post(kc.authServerUrl + "/realms/xxx/protocol/openid-connect/token", {
grant_type: 'password',
client_id: 'account',
username: 'dr',
password: 'dr'
}
)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
旁注:
在钥匙斗篷上,我设置了允许原点*
同样奇怪的是:我看到用户已经从ip 172.17.0.1打开了会话(我猜这是由curl引起的)
问题:如何使它从react.js工作?
问题2:为什么它在curl上工作而在axios上不工作?好的,这似乎是可行的:
fetch(kc.authServerUrl + "/realms/xxx/protocol/openid-connect/token", {
method: 'POST',
mode: 'no-cors',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
},
body: 'grant_type=password&client_id=account&username=dr&password=dr'
});
好的,这似乎有效:
fetch(kc.authServerUrl + "/realms/xxx/protocol/openid-connect/token", {
method: 'POST',
mode: 'no-cors',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
},
body: 'grant_type=password&client_id=account&username=dr&password=dr'
});
如果像我这样的人想坚持使用axios,我找到了一个解决方案 正如axios wiki中所说,默认情况下,axios将JavaScript对象序列化为JSON。因此,要在
应用程序/x-www-form-urlencoded
中发送数据,可以执行以下操作:
var params = new URLSearchParams();
params.append('grant_type', 'password');
params.append('client_id', 'account');
params.append('username', 'dr');
params.append('password', 'dr');
axios.post('/realms/xxx/protocol/openid-connect/token', params);
也可以使用qs库执行此操作:
import qs from 'querystring';
let data = {
grant_type: 'password',
client_id: 'account',
username: 'dr',
password: 'dr'
};
axios.post('/reals/xxx/protocol/openid-connect/token', qs.stringify(data));
如果像我这样的人想坚持使用axios,我找到了一个解决方案 正如axios wiki中所说,默认情况下,axios将JavaScript对象序列化为JSON。因此,要在
应用程序/x-www-form-urlencoded
中发送数据,可以执行以下操作:
var params = new URLSearchParams();
params.append('grant_type', 'password');
params.append('client_id', 'account');
params.append('username', 'dr');
params.append('password', 'dr');
axios.post('/realms/xxx/protocol/openid-connect/token', params);
也可以使用qs库执行此操作:
import qs from 'querystring';
let data = {
grant_type: 'password',
client_id: 'account',
username: 'dr',
password: 'dr'
};
axios.post('/reals/xxx/protocol/openid-connect/token', qs.stringify(data));
无法告诉你我在axios上遇到的问题。这并不奇怪。我不能告诉你我在axios上遇到的问题。这并不奇怪。