预检请求失败,并显示 window.fetch api

Preflight Request failing with the window.fetch api

本文关键字:显示 window fetch api 请求 失败      更新时间:2023-09-26

让我先说一下它在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) 中使用了完全相同的网址和数据,并且它正在运行,但由于某种原因,当我使用 FETCH API 时它不起作用。任何帮助将不胜感激。

万一有人偶然发现这一点,并且它可以在未来帮助人们,我们找到了答案。我发布的代码没有错。它之所以在邮递员而不是客户端上工作,是因为邮递员不做预检请求。客户端(几乎所有网站都会这样做)以 OPTIONS 方法的形式发送预检请求。后端 Spring 服务器不允许使用选项方法。后端开发人员必须允许 OPTIONS 方法访问服务器中的特定路由,而不仅仅是 POST。

因此,如果您正在 Postman 上进行测试但无法复制该行为,请记住 Postman 不会发送预检请求。