Keycloak - React.js 无法调用 API
Keycloak - React.js cannot call API
我有一个简单的 React.js 应用程序。我想测试它是否可以从我的 API 调用端点。我的 API 和 React.js 应用程序都使用 Keycloak 进行身份验证。
这是我的 API 端点:
[HttpGet]
[Route("authorization")]
[Authorize(Roles = "prototype-user")]
public string TestAuthorization()
{
return "Authorization is working!";
}
这会在 Postman 中测试时显示 Authorization is working
消息。所有其他端点在邮递员中运行良好。
现在,我尝试在同样使用 Keycloak 的 React.js 应用程序中调用此端点。这是我的代码片段
constructor(props) {
super(props);
this.state = {
result: [],
token: null
};
//this is passed from another component derived from keycloak.idToken
this.state.token = this.props.token
}
componentDidMount(){
var url = this.getBaseUrl() + "/authorization";
fetch(url, {
method: "get",
credentials: "include",
headers: {
'Authorization': `token ${this.state.token}`,
},
}).then(
res=>res.json())
.then(
result=>{
this.setState({result:result})
}
).catch(error =>
alert(error)
)
}
这 returns 一个错误说 SyntaxError:JSON.parse: unexpected character at line 1 column 1 of JSON data
甚至没有进入我的 API 断点。
谁能告诉我这有什么问题吗?我是 React.js 的新手,所以我不知道如何解决这个问题。我已经在寻找其他参考文献,但找不到。
谢谢!
已经通过在授权 header 中将 token
更改为 bearer
解决了这个答案。
componentDidMount() {
var url = this.getBaseUrl() + "/authorization";
fetch(url, {
method: "get",
credentials: "include",
headers: {
'Authorization': `Bearer ${this.state.token}`,
},
}).then((response) => {
if (response.status == 200) {
return response.json()
} else {
throw new Error(response.status)
}
})
.then(result => {
this.setState({ result: result })
}).catch(error =>
alert(error)
)
}
我有一个简单的 React.js 应用程序。我想测试它是否可以从我的 API 调用端点。我的 API 和 React.js 应用程序都使用 Keycloak 进行身份验证。
这是我的 API 端点:
[HttpGet]
[Route("authorization")]
[Authorize(Roles = "prototype-user")]
public string TestAuthorization()
{
return "Authorization is working!";
}
这会在 Postman 中测试时显示 Authorization is working
消息。所有其他端点在邮递员中运行良好。
现在,我尝试在同样使用 Keycloak 的 React.js 应用程序中调用此端点。这是我的代码片段
constructor(props) {
super(props);
this.state = {
result: [],
token: null
};
//this is passed from another component derived from keycloak.idToken
this.state.token = this.props.token
}
componentDidMount(){
var url = this.getBaseUrl() + "/authorization";
fetch(url, {
method: "get",
credentials: "include",
headers: {
'Authorization': `token ${this.state.token}`,
},
}).then(
res=>res.json())
.then(
result=>{
this.setState({result:result})
}
).catch(error =>
alert(error)
)
}
这 returns 一个错误说 SyntaxError:JSON.parse: unexpected character at line 1 column 1 of JSON data
甚至没有进入我的 API 断点。
谁能告诉我这有什么问题吗?我是 React.js 的新手,所以我不知道如何解决这个问题。我已经在寻找其他参考文献,但找不到。
谢谢!
已经通过在授权 header 中将 token
更改为 bearer
解决了这个答案。
componentDidMount() {
var url = this.getBaseUrl() + "/authorization";
fetch(url, {
method: "get",
credentials: "include",
headers: {
'Authorization': `Bearer ${this.state.token}`,
},
}).then((response) => {
if (response.status == 200) {
return response.json()
} else {
throw new Error(response.status)
}
})
.then(result => {
this.setState({ result: result })
}).catch(error =>
alert(error)
)
}