让我先说明它是在Chrome的附加API客户端POSTMAN中运行的。但它在我的实际应用程序中不起作用,我想知道是否有一些我忘记包含在获取请求中的内容。
我有以下要求。
(id, vzId)=>{
var json = {id: id, vzId: vzId, };
var request = {
method: 'POST',
body: json,
headers: new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json'
})
}
fetch('http://localhost:8080/notification/markRead',request).then(function(response){
return response.json();
}).then(function(json){
console.log(json);
})
}
当触发请求时,它会返回此错误。
OPTIONS http://localhost:8080/notification/markRead
Fetch API cannot load http://localhost:8080/notification/markRead.
Response for preflight has invalid HTTP status code 403
我在chrome rest客户端(POSTMAN)中使用了完全相同的url和数据并且它正在工作,但由于某种原因,当我使用FETCH api时它无法正常工作。任何帮助将非常感激。
答案 0 :(得分:2)
如果有人偶然发现它并且它可以在将来帮助人们,我们找到了答案。我发布的代码没有错。之所以在Postman而不是客户工作是因为Postman没有做预检请求。客户端(几乎所有网站都会这样做)以OPTIONS方法的形式发送了预检请求。后端Spring服务器不允许使用options方法。后端开发人员必须允许OPTIONS方法到服务器中的特定路由,而不仅仅是POST。
因此,如果您要对Postman进行测试但无法复制该行为,请记住,Postman不会发送预检请求。