【问题标题】:CORS issue when trying POST尝试 POST 时出现 CORS 问题
【发布时间】:2021-04-22 02:16:49
【问题描述】:

我在尝试将 POST 与我的 API 一起使用时遇到了 CORS 问题。 从源“null”访问“http://localhost/finalMandatory/api/track/create.php”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP好的状态。

我尝试关注其他一些似乎有相同问题的帖子,但我很难在自己的代码中实现它。

$.ajax({
  url: "http://localhost/finalMandatory/api/track/create.php",
  type : "POST",
  contentType : 'application/json',
  data : form_data,
  success : function(result) {
    showProducts();
  },
  error: function(xhr, resp, text) {
    console.log(xhr, resp, text);
    console.log(form_data);
  }
});

我还在我的 api 中使用这些标头,我认为这足以处理 CORS 问题。

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");

我希望有人可以帮助我解决我的问题。

【问题讨论】:

  • 代码和详细信息应作为问题的一部分发布在这里,而不是作为非现场资源的链接。
  • Origin null 只会在脚本从 http 上下文之外执行时出现。脚本在哪里?可能是a duplicate
  • @DanielW。脚本位于 C:\xampp\htdocs\finalMandatory\app\tracks,API 位于 C:\xampp\htdocs\finalMandatory\api\track
  • 我指的不是物理位置,而是上下文。浏览器中文件的地址是以file://开头还是http://开头?
  • 哦,对不起,我误会了。这是http://

标签: javascript ajax api cors


【解决方案1】:

我猜想发送到 create.php 的 OPTION 请求失败了。可能是因为您的后端代码即使在这种情况下也试图执行该操作。 OPTION 请求应仅以 CORS 标头和空正文终止。您可以使用 REST 客户端(例如 Postman)进行检查。

【讨论】:

  • 我不太清楚你的意思,当我尝试使用 Postman 进行 POST 时,它按预期工作。我需要在 OPTIONS 中寻找什么,请求?标题选项卡中有很多信息。
  • 尝试使用 Postman 执行 OPTION 请求,正文为空白:这将显示导致错误的响应。
  • 我收到了 400 Bad request,但这是意料之中的事情,因为我体内没有任何东西?
  • 这就是问题所在!在 OPTION 请求的情况下,端点不应执行任何操作。只需返回一个空的 200 响应。将更改到位,您会发现它会起作用。
  • 我想我现在明白了,我只是不太确定如何实现它。我已经这样做了,当正文为空时,它只会在 Postman 中给我一个 200 代码,但它似乎无法解决问题。
猜你喜欢
  • 2017-06-08
  • 2022-11-17
  • 1970-01-01
  • 2021-05-16
  • 2017-06-09
  • 2021-10-30
  • 2021-09-24
  • 2020-04-22
  • 2020-11-06
相关资源
最近更新 更多