繁体   English   中英

如何即使使用自定义标头也禁用预检请求

[英]how to disable preflight request even with custom headers

我需要一个在这方面经验丰富,知识渊博的人,以便他可以为我提供建议。我将详细解释我的情况。 我写了一个宁静的API。 这是一个超大型的api,我正在使用前端SPA(vue.js,对于实际而言并不重要)。 我在许多页面上提出3-4个不同的api请求(获取不同的信息)。 真正让我烦恼的是发生了飞行前的要求。 这意味着如果转到一页需要4个请求,则不会执行4个api请求,由于预检OPTIONS请求,它会发出4 * 2 = 8个api请求。 我不需要它,因为我对cors有所了解,并且可以正确设置cors,这样在每个请求之前,我都不需要进行飞行前检查即可确定请求是否安全。 (PREFLIGHT是一种很好的方法,如果我的网域不了解cors,可以消除来自其他网域的威胁,这是一种很好的,快速的方法(不是最佳方法),因此预检会为我辩护并告诉他我的网域不知道关于cors的问题,他无法要求其他来源向我提出要求。我还向您提供了一些信息。

现在是时候禁用它了,我知道它不会接受请求,因此它可能很快,但是我仍然不想要它。 我想禁用它。 我知道有可能。 我在stackoverflow上读了很多书,有人说您只需要将content-type设置为text / plain或其他解决方案,但是他们说如果您使用自定义标头,则不可能。 我使用自定义标头,以便将身份验证令牌(承载)传递给我的api中间件。 必须有一种以某种方式禁用它的方法。

非常感谢您和任何建议。

好的,第一步是从预检OPTIONS请求中返回Access-Control-Max-Age响应标头。 这指定了OPTIONS响应在浏览器中缓存的时间长度。 如果返回此值,则浏览器将停止发送预检请求。 好吧,它最初会为每个请求发送一个请求,但是之后,它将使用浏览器中的缓存版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM