当前位置: 首页 > 知识库问答 >
问题:

为什么我的$.ajax显示“Preflight is invalid redirect error”?

吕博耘
2023-03-14

我在Postman中尝试了下面的代码,它起作用了。代码有问题吗?

$.ajax({
   url: 'http://api.example.com/users/get',
   type: 'POST',
   headers: {
      'name-api-key':'ewf45r4435trge',
   },
   data: {
      'uid':36,
   },
   success: function(data) {
      console.log(data);
   }
});

我在我的控制台中发现了这个错误,如下所示,请告知。

XMLHttpRequest无法加载http://api.example.com/users/Get响应,因为预飞行无效(重定向

共有3个答案

方季同
2023-03-14

该错误指示预飞行正在获得重定向响应。出现这种情况的原因有很多。找出你被重定向到的地方,以获得为什么会发生的线索。请选中“开发人员工具”中的“网络”选项卡。

正如@Peter T所提到的,一个原因是API可能需要HTTPS连接,而不是HTTP,并且HTTP上的所有请求都被重定向。在本例中,302响应返回的location头将显示与http更改为https相同的url。

另一个原因可能是您的身份验证令牌未被发送或不正确。大多数服务器都被设置为将不包含身份验证令牌的所有请求重定向到登录页面。再次检查您的location头,看看这是否是发送您的位置,并查看浏览器是否将您的身份验证令牌与请求一起发送。

通常,服务器将被配置为总是将没有身份验证令牌的请求重定向到登录页面--包括您的预飞行/选项请求。这是个问题。更改服务器配置以允许来自未经身份验证的用户的options请求。

龙俊良
2023-03-14

这个答案涉及的是完全相同的事情(尽管是angular)--这是一个CORS问题。

一个快速的解决方法是通过指定一个“内容类型”头值来修改每个POST请求,该头值不会触发“预飞行”。这些类型是:

  • 应用程序/x-www-form-urlencoded
  • 多部分/表单-数据
  • 文本/纯文本

任何其他东西都会触发一次飞行准备。

例如:

$.ajax({
   url: 'http://api.example.com/users/get',
   type: 'POST',
   headers: {
      'name-api-key':'ewf45r4435trge',
      'Content-Type':'application/x-www-form-urlencoded'
   },
   data: {
      'uid':36,
   },
   success: function(data) {
      console.log(data);
   }
});
冷翼
2023-03-14

我在尝试调用https web服务时收到了与http web服务相同的错误。

e.g when I call url 'http://api.example.com/users/get'
which should be 'https://api.example.com/users/get'

当您尝试调用http而不是HTTPS时,由于重定向状态302而产生此错误。

 类似资料:
  • 问题内容: 我将ajax与jquery一起使用,当我尝试在弹出窗口中显示结果时。然后警报始终显示 编辑: 问题答案: 尝试在函数的最后一行添加或。

  • 包装呈现值;导入java。util。扫描仪; 公共类PresentValue{ }问题是写一个方法presentValue来执行此计算。该方法应接受未来值、年利率和年数作为参数。它应该返回现值,即您今天需要存入的金额。在一个程序中演示该方法,该程序允许用户试验公式项的不同值。 这里是公式P=F/(1r)^2

  • 如果我直接在构造函数中添加面板,它可以正常工作,但在控制器中则不行。当我在菜单上点击“Reservas”或“Contabilidad”选项之一时,我想更改显示的面板并查看其他内容。 这是我的观点 } 这是我的控制器 } panel对象只有一个jlabel,其中有一个hello要测试

  • 问题内容: 我在WAMP中使用PHP编写PHP应用程序已有一段时间了。现在,我将在工作PC上分别安装PHP和Apache HTTP Server。我已经安装了PHP 5和最新的Apache。我去本地主机,看到它的工作原理! 现在,我添加了一个名为的文件,该文件显示: 但是在浏览器中,它仅显示纯文本。我有明确告诉它使用PHP 5的地方吗? 问题答案: 您需要将其添加到服务器配置中: 那是假设您已经正

  • 我正在尝试构建一个简单的Web应用程序,它接受大量的二进制输入,并计算一个布尔公式,然后输出。我做错了什么? null null

  • 问题内容: 我的内容带有“气泡”,效果很好。现在,我想显示一个计数(2行),该计数应始终位于该div的右下角,位于其内部。我尝试了很多事情,但由于某种原因,它总是与div重叠并在外面显示。我究竟做错了什么? 问题答案: 您处于浮动状态,因此不会影响其父容器的高度。 将其设置在父项()上,或使用其他包含技术的浮点数之一来做到这一点。