问题标签 [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 投票
3 回答
4290 浏览

javascript - 使用子域时防止预检选项

给定两个子域:

web.mysite.comapi.mysite.com

web.当前从to发出任何请求都会api.导致发出预检 OPTIONS 请求。如果它不在中国的请求中增加额外的 600 毫秒,这将不是什么大问题。

有人告诉我,document.domain = 'mysite.com';在 JS 中设置可以解决问题,但这根本没有帮助。

发送到不同的子域时是否有可能/如何禁用 OPTIONS 请求。

0 投票
1 回答
412 浏览

symfony1 - Symfony 1.4 中的路由:有没有办法允许 sf_method = OPTIONS 用于预检 HTTP 请求

你们都可能知道浏览器在某些情况下会执行预检 HTTP 请求: https ://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

我的 Web 应用程序仍在 Symfony1 上。我想实现一个 RESTful 服务,因此使用 Symfony 路由来允许特定的 HTTP 请求方法,如 GET 或 POST ( http://symfony.com/legacy/doc/reference/1_4/en/10-Routing#chapter_10_sub_sf_method )。

例子:

在我看来,不能将 OPTIONS 请求定义/处理为 sf_method 值。因为如果我的想法是正确的,我找不到任何信息,所以我想知道我是否正确,或者我也找不到解决方案。

提前致谢!

0 投票
0 回答
1835 浏览

spring - Spring Boot 在 OPTIONS 预检中吞下 Access-Control-Request-Headers

我有一个 Spring Boot REST 应用程序,上面有一个非常简单的 CORS 过滤器。我想要做的是动态响应 Access-Control-Request-Headers 标头中的值,而不是提供特定的列表。普遍的看法似乎是明确设置“Access-Control-Allow-Headers”中返回的值,但是我们会将一组来源列入白名单,并希望允许它们发送的任何标头。我找不到在 Access-Control-Request-Headers 中复制 Access-Control-Allow-Headers 值的方法。

这是代码

使用来自 Chrome 的请求和响应(当我们硬编码 Access-Control-Allow-Headers 的值时)

这是错误

XMLHttpRequest 无法加载 https://myapp.com/gradebooks/5566669e-e4b0-d05e-0150-98d7ffffffff/assignments/3ad7f1e7-679b-4d8b-856e-d2e3589eaad6。Access-Control-Allow-Headers 不允许请求标头字段 Content-Type。

我在过滤器中发现的调试是 Access-Control-Request-Headers,只有那个标题,在它到达过滤器时丢失了。拼错标题并且它到达了,所以似乎有东西在拦截标题并在它到达我的过滤器之前将其丢弃......

0 投票
2 回答
5671 浏览

google-chrome - Chrome 不缓存预检

我正在实现一个应该支持跨域请求的 REST API。使用 CORS 我想实现这一点。几乎我的所有请求都是“不简单的”,这意味着对于所有非 GET 请求,必须由浏览器发送预检请求。

为了限制预检/OPTIONS 请求的数量,我尝试让浏览器缓存 OPTIONS 请求。这似乎适用于 Firefox 和 Safari,但不适用于 Chrome。我知道 Chrome 只会将预检请求缓存 10 分钟,但就我而言,似乎根本没有缓存。

这些是 Chrome 发送/接收的 HTTP 请求和响应:

要求:

回复:

0 投票
1 回答
1816 浏览

cors - MVC6 Cors - 拦截预检

我正在将我的 WebApi(s) 升级到 MVC6。

在 WebApi 中,我可以拦截每个 HTTP 请求,如果是预检,我可以使用浏览器接受的标头进行响应。

我试图弄清楚如何在 MVC6 WebApi 中做同样的事情。

这是 WebApi 代码。

我如何用 MVC6 做同样的事情?

谢谢,鲍勃

这是我基于反馈的下一次尝试。如果我了解中间件管道,我可能会自己解决这个问题。我现在当然会学习它。

我尝试了这段代码,但它并没有像我希望的那样命中 http 请求。

0 投票
1 回答
483 浏览

post - IIS 拦截预检 MVC6

我正在尝试启用 CORS,以允许我的 Angular 应用程序与新的 MVC6 Web Api 对话。

“GET”有效,但“POST”无效,因为首先发送了 CORS Preflight。IIS 拦截此预检并做出响应。

在 WebApi2 中,我能够通过以下 web.config 设置阻止 IIS 拦截预检。

然后我可以询问请求并返回我想要的“OPTIONS”标头。

我可以在新的 MVC6 WebApi 中完成这两项工作,但由于某种原因,我无法让 IIS 停止拦截“OPTIONS”预检。

我在 MVC 中使用这段代码,我相信如果我只能让 IIS 停止拦截“OPTIONS”请求,它就可以工作。

有没有人处理过这个问题或者有一个使用 CORS 的 MVC6 的工作示例?

谢谢

0 投票
1 回答
3820 浏览

javascript - 来自 IE 或 Firefox 的 CORS 请求中没有 Referer 标头

我正在尝试向服务器发送 CORS POST 请求。

在 Chrome 中,这按预期工作 - 将 OPTIONS 预检请求发送到服务器,服务器使用访问控制标头进行响应,发送 POST 请求。当我尝试在 IE 或 Firefox 中执行此操作时,不会随 OPTIONS 请求发送引用者,因此我无法添加 access-control-allow-origin 标头(因为这是以编程方式完成的)。

Javascript是:

Chrome中的标头如下: 铬标头

Firefox 中的标头如下: 火狐标头

有没有办法保证推荐人将与 OPTIONS 预检请求一起发送?如果没有 - 是否有另一种方法来获取引用 URL,以便我可以添加允许来源标头?

0 投票
0 回答
92 浏览

stackexchange-api - 选项 对 stackexchange api 的预检以 BAD REQUEST 响应

我整天都在用头撞这个。尝试从我的 web 应用程序发布到 stackexchange 时,我的请求不断收到 400 BAD REQUEST。我一直在使用提琴手来尝试欺骗请求,但我似乎无法让它通过。有谁知道原因是什么,以及我应该如何提出我的请求?

示例请求

回复

使用 JSON

0 投票
2 回答
3130 浏览

cors - CouchDB 中的 _users 数据库不允许使用 HTTP OPTIONS 方法

我正在尝试从从另一个域连接到 CouchDB 的应用程序中更改用户密码。我的代码或多或少与CouchDB Docs中的示例相同,即获取文档,更改数据,然后将更改的 PUT 请求发回。PUT 请求出现问题 - 由于 CORS,浏览器尝试在发送 PUT 请求之前执行 OPTIONS 请求,但 OPTIONS 请求返回 405 Method Not Allowed。

有谁知道如何解决这个问题?

以下是请求标头以防万一:

0 投票
2 回答
5972 浏览

cors - 如何识别 CORS 预检请求?

CORS 预检请求显然使用 OPTIONS 方法并具有 Origin 标头。但是,浏览器可以决定为任何HTTP 请求添加 Origin 标头。此外,OPTIONS 可用于 CORS 以外的其他功能。(如何)我能否准确识别(没有误报或否定)请求是否是 CORS 预检请求?