问题标签 [preflight]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
382 浏览

javascript - 来自预检调用的 http 错误在 jquery ajax 响应中不可见

我已经构建了一个客户端应用程序,它使用 Ajax 调用另一个域上的 WebService(服务器支持 CORS)。

有时,当 Ajax 进行预检调用时,它会从服务器获取 http 错误代码 400 或 500,并以以下格式响应:

我可以在浏览器控制台中看到错误,但在我的 JavaScript 代码中,我只得到状态 0 和 statusText“错误”。有谁知道如何从 JavaScript 中的预检调用中检索输出?

我的 Ajax 调用看起来像这样:

0 投票
1 回答
58607 浏览

http - 带有 Preflight 和重定向的 CORS 请求:不允许。解决方法?

我正在设计一个允许用户进行身份验证(使用令牌)并包含同一域内的重定向的 API。现在,对于返回 303 的端点的未经身份验证的请求,

一切都很顺利。

让我们向Authorization发送标头的同一端点发出经过身份验证的请求。这使请求成为预检请求,浏览器执行预检OPTIONS请求,即

此时,浏览器不会GET/documents/abc

这种行为符合标准

7.1.5 带预检的跨域请求

如果响应的 HTTP 状态码不在 2xx 范围内

应用网络错误步骤。

这似乎意味着无法对经过身份验证的资源进行重定向,即使重定向位于同一个域 ( localhost) 上。

这真的是真的吗?有通用的解决方法吗?

0 投票
1 回答
2748 浏览

angularjs - 由于预检请求,SOAP UI REST 模拟服务失败

由于预检 OPTIONS 请求,我的 REST SOAPUI 模拟服务失败了。我在 SOAPUI 中创建了一个 GET 模拟服务 /getAllStudents。当我尝试从 apache 服务器调用它时,浏览器调用了 OPTIONS getAllStudents,它因 404 错误而失败。有没有办法解决这个问题?

0 投票
2 回答
492 浏览

ruby-on-rails - 即使将 Rails 服务器配置为接受所有请求,Angular 发布请求也不会通过预检

我正在使用 angularJS 应用程序来请求 rails API。我从我的角度控制器发送我的 http 请求,但似乎预检请求没有通过访问控制检查:

我试图通过按照此处的建议设置我的 application.rb 文件来配置我的 Rails 服务器:

但我仍然在客户端收到以下错误:

在此处输入图像描述

在服务器端,rails API 似乎不理解 OPTIONS 是预检调用,因为我收到路由错误:

我还需要在客户端(角度)或服务器(rails)端配置什么才能使跨源请求正常工作?

编辑

我也尝试过像这样更新我的 application_controller :

似乎代码甚至没有进入应用程序控制器,我仍然收到错误...

0 投票
1 回答
568 浏览

javascript - 使用 window.fetch api 的预检请求失败

让我先说它在 POSTMAN(Chrome 的附加 API 客户端)中工作。但它在我的实际应用程序中不起作用,我想知道是否有一些我忘记包含在获取请求中的东西。

我有以下要求。

触发请求时,它会返回此错误。

我在我的 chrome rest 客户端 (POSTMAN) 中使用了完全相同的 url 和数据,它正在工作,但由于某种原因,当我使用 FETCH api 时它不工作。任何帮助将非常感激。

0 投票
1 回答
395 浏览

api - 维基百科 API“预检无效”

这个 API 请求除了状态代码“0”之外没有得到任何东西,我无法弄清楚它有什么问题。浏览器上的 console.log 显示“对预检的响应无效(重定向)”,但如果我只是将网站 url 添加到浏览器中,我就可以访问它。我提出请求的方式一定有问题,但我无法弄清楚。这是代码。

我也将“http”更改为“https”,但这次我仍然在控制台上看到“0”,您看到“对预检请求的响应未通过访问控制检查:没有 'Access-Control-Allow-Origin'请求的资源上存在标头。因此,不允许访问源“ http://s.codepen.io ”。”

我不确定它是语法,我构建请求的方式还是什么,但是在 stackoverflow 和谷歌上尝试了两天的不同解决方案之后,我仍然一无所获。万一有人想看到我在这里遇到困难的实际网站http://codepen.io/Ramins01/pen/rxExKw

0 投票
1 回答
279 浏览

ruby - 使用 Faraday gem 的 Preflight OPTIONS 请求

我将如何向Faraday提出预检请求?似乎有名称冲突。

0 投票
1 回答
1451 浏览

javascript - 由于 CORS 导致 HTTP 发布请求失败

我无法让我的应用程序运行。我整天都在读这个,尝试了很多东西,但最后没有任何效果。在最后一次尝试中,我尝试了这个链接。我将 java 后端作为 RESTful Web 服务,没有任何额外的框架,如 Jersey 或 RESTeasy,只是纯 java。我有我的登录 POST 方法:

WebServiceUtil.createResponse 方法基本上添加了必要的标头,如您在此处看到的:

我还看到人们使用了另一种方法。它带有过滤器,例如这个例子。我还想知道我的实现是否与此不同以及预检定义的确切位置 - 在我的实现中是 .allow("OPTIONS") 执行此操作,但您可以纠正我的错误。

然后我有我的 Web 应用程序,我在其中调用此 POST 方法。我为此使用AngularJS。在我的 AuthenticateController 控制器中,我有 Login 方法,在登录表单中提交时调用该方法。实现如下所示:

有人知道这里有什么问题吗?通过 chrome 开发人员工具,我可以看到错误“XMLHttpRequest 无法加载'placeholder-server-URL'。对预检请求的响应未通过访问控制检查:没有'Access-Control-Allow-Origin'标头存在于请求的资源。因此,不允许访问源“占位符-客户端-URL”。”。

在调用后端时,我是否应该在客户端添加这两个标头值:

  • 访问控制请求方法
  • 访问控制请求标头
0 投票
1 回答
188 浏览

angularjs - 带有飞行前请求的 Angularjs $q.all 在 OPTIONS 请求后解析

我有多个删除请求,前面有一个OPTIONS飞行前请求。但是控件在请求$q.all之后进入。OPTIONS这是我的代码:

所以这里是网络选项卡中发生的事情:首先,OPTIONS请求被执行,然后GET请求被执行companyMasterC.getCompanies(); ,这应该在DELETE请求被执行时执行。并且在GET请求DELETE请求被执行之后。

0 投票
0 回答
1869 浏览

ajax - 跨域请求被阻止:同源策略不允许读取远程资源 asp.net

我面临跨域 Ajax 调用的问题。当我通过 Ajax Call 调用 asp.net WebMethod 时,我收到警告:原因:CORS 预检通道未成功

这是完整的代码

服务器代码:

我在 Web.config 中添加了标头

<httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Credentials" value="true" /> <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, X-Token" /> <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" /> </customHeaders> </httpProtocol>


这就是我试图调用这个网络方法的方式

预检响应具有无效的 HTTP 状态代码 404