Post请求在postman中工作,但在javascript获取函数中不工作
我以为我以前已经解决了这个问题,并且能够使用fetch向本地托管的apache服务器发出成功的post请求,但今天我尝试发出post,再次出现“cors飞行前请求失败”错误。我不知道为什么它以前能用,为什么突然又不能用了 这是我3天前工作的php文件头-Post请求在postman中工作,但在javascript获取函数中不工作,javascript,php,rest,ecmascript-6,cors,Javascript,Php,Rest,Ecmascript 6,Cors,我以为我以前已经解决了这个问题,并且能够使用fetch向本地托管的apache服务器发出成功的post请求,但今天我尝试发出post,再次出现“cors飞行前请求失败”错误。我不知道为什么它以前能用,为什么突然又不能用了 这是我3天前工作的php文件头- header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); header('Access-Control-Allow-Metho
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Access-Control-Allow-Headers,Content-Type,Access-Control-Allow-Methods,
Authorization, X-Requested-With');
这是我在上面使用的获取请求-
fetch("http://menu.com/menu/api/post/create.php", {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'title' : 'qweqweqw',
'body' : '1111w',
'author' : '2222r',
'category_id' : '2'
})
})
.then( (response) => {
console.log(response);
});
以下是有效的邮递员代码:
POST /menu/api/post/create.php HTTP/1.1
Host: menu.com
Content-Type: application/json
cache-control: no-cache
Postman-Token: 83a8e0d1-f45a-4184-92f6-f0be2f8fcf5f
{
"title" : "new new title",
"body" : "new neqwsadasssssssssseqweqwew jew",
"author" : "new newzxxxxxxxxxxxxwq author",
"category_id" : "1"
}------WebKitFormBoundary7MA4YWxkTrZu0gW--
我很感激你能帮我做这件事
编辑-
以下是cors错误:
Access to fetch at 'http://menu.com/menu/api/post/create.php' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
在我的apache服务器错误日志中,我得到了以下PHP致命错误:未捕获PDOException:SQLSTATE[HY000]:常规错误:1366不正确的整数值:“/home/orphe$”中第1行的“category_id”列为“”,,但我不确定为什么它会为category_id获取此值,因为我复制/粘贴了来自postman的工作请求,但它仍然不工作。有一个飞行前请求(带有选项),但服务器没有返回HTTP 200 OK。 尝试将以下内容添加到
create.php
:
header("HTTP/1.1 200 OK");
如果这不起作用,请还包括请求和响应头。有一个飞行前请求(带有选项),但服务器没有返回HTTP 200 OK。 尝试将以下内容添加到
create.php
:
header("HTTP/1.1 200 OK");
如果这不起作用,请还包括请求和响应标题。将我的获取请求标题更改为
标题:新标题()
修复了所有问题。将我的获取请求标题更改为标题:新标题()
修复了所有问题。请包括您在浏览器控制台中看到的CORS错误目标url不是活动的您收到的响应来自浏览器自动执行的CORS飞行前选项请求。浏览器甚至都不会尝试您的POST请求,因为该选项请求失败。因此,要在Postman中重现错误,您需要发送一个选项请求,而不是POST请求。@sideshowbarker它仍然可以在Postman中处理选项请求,仅从该请求中获得200 OK响应。add标头('Access-Control-Allow-Methods:POST,OPTIONS,FETCH');,允许访问时提取允许控制。上一次我这样做了,它工作了。请包括您在浏览器控制台中看到的CORS错误目标url不是活动的您得到的响应来自浏览器自动执行的CORS飞行前选项请求。浏览器甚至都不会尝试您的POST请求,因为该选项请求失败。因此,要在Postman中重现错误,您需要发送一个选项请求,而不是POST请求。@sideshowbarker它仍然可以在Postman中处理选项请求,仅从该请求中获得200 OK响应。add标头('Access-Control-Allow-Methods:POST,OPTIONS,FETCH');,允许访问时提取允许控制。上次我这么做了,它成功了。这不起作用,我得到了同样的错误。我真的不在乎这是一个post请求还是我只想发送数据的选项。我和邮递员一起发送,效果很好,但由于某种原因,当我发送与邮递员中完全相同的对象时,我的获取请求一直失败。这不起作用,我收到了相同的错误。我真的不在乎这是一个post请求还是我只想发送数据的选项。我将它与postman一起发送,它工作正常,但由于某种原因,当我发送与postman中完全相同的对象时,我的获取请求一直失败。。