问题标签 [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.
javascript - 来自预检调用的 http 错误在 jquery ajax 响应中不可见
我已经构建了一个客户端应用程序,它使用 Ajax 调用另一个域上的 WebService(服务器支持 CORS)。
有时,当 Ajax 进行预检调用时,它会从服务器获取 http 错误代码 400 或 500,并以以下格式响应:
我可以在浏览器控制台中看到错误,但在我的 JavaScript 代码中,我只得到状态 0 和 statusText“错误”。有谁知道如何从 JavaScript 中的预检调用中检索输出?
我的 Ajax 调用看起来像这样:
http - 带有 Preflight 和重定向的 CORS 请求:不允许。解决方法?
我正在设计一个允许用户进行身份验证(使用令牌)并包含同一域内的重定向的 API。现在,对于返回 303 的端点的未经身份验证的请求,
一切都很顺利。
让我们向Authorization
发送标头的同一端点发出经过身份验证的请求。这使请求成为预检请求,浏览器执行预检OPTIONS
请求,即
此时,浏览器不会GET
在/documents/abc
这种行为符合标准:
7.1.5 带预检的跨域请求
如果响应的 HTTP 状态码不在 2xx 范围内
应用网络错误步骤。
这似乎意味着无法对经过身份验证的资源进行重定向,即使重定向位于同一个域 ( localhost
) 上。
这真的是真的吗?有通用的解决方法吗?
angularjs - 由于预检请求,SOAP UI REST 模拟服务失败
由于预检 OPTIONS 请求,我的 REST SOAPUI 模拟服务失败了。我在 SOAPUI 中创建了一个 GET 模拟服务 /getAllStudents。当我尝试从 apache 服务器调用它时,浏览器调用了 OPTIONS getAllStudents,它因 404 错误而失败。有没有办法解决这个问题?
ruby-on-rails - 即使将 Rails 服务器配置为接受所有请求,Angular 发布请求也不会通过预检
我正在使用 angularJS 应用程序来请求 rails API。我从我的角度控制器发送我的 http 请求,但似乎预检请求没有通过访问控制检查:
我试图通过按照此处的建议设置我的 application.rb 文件来配置我的 Rails 服务器:
但我仍然在客户端收到以下错误:
在服务器端,rails API 似乎不理解 OPTIONS 是预检调用,因为我收到路由错误:
我还需要在客户端(角度)或服务器(rails)端配置什么才能使跨源请求正常工作?
编辑
我也尝试过像这样更新我的 application_controller :
似乎代码甚至没有进入应用程序控制器,我仍然收到错误...
javascript - 使用 window.fetch api 的预检请求失败
让我先说它在 POSTMAN(Chrome 的附加 API 客户端)中工作。但它在我的实际应用程序中不起作用,我想知道是否有一些我忘记包含在获取请求中的东西。
我有以下要求。
触发请求时,它会返回此错误。
我在我的 chrome rest 客户端 (POSTMAN) 中使用了完全相同的 url 和数据,它正在工作,但由于某种原因,当我使用 FETCH api 时它不工作。任何帮助将非常感激。
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
ruby - 使用 Faraday gem 的 Preflight OPTIONS 请求
我将如何向Faraday提出预检请求?似乎有名称冲突。
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”。”。
在调用后端时,我是否应该在客户端添加这两个标头值:
- 访问控制请求方法
- 访问控制请求标头
angularjs - 带有飞行前请求的 Angularjs $q.all 在 OPTIONS 请求后解析
我有多个删除请求,前面有一个OPTIONS
飞行前请求。但是控件在请求$q.all
之后进入。OPTIONS
这是我的代码:
所以这里是网络选项卡中发生的事情:首先,OPTIONS
请求被执行,然后GET
请求被执行companyMasterC.getCompanies();
,这应该在DELETE
请求被执行时执行。并且在GET
请求DELETE
请求被执行之后。
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>
这就是我试图调用这个网络方法的方式