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

如果我在前端上得到一个跨源请求阻塞错误,为什么请求似乎仍然得到处理

严誉
2023-03-14

我的印象是,跨源请求被阻止主要是一个安全问题,它防止邪恶的网站获得或更新您的web服务上的信息。

import express = require('express')
const app = express()
const port = 80

app.use(function (req, res, next) {
    // res.header("Access-Control-Allow-Origin", "*")
    // res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
    next()
});

app.get('/foo', (req, res) => {
    console.log("test1")
    res.json({
        data: "Hello"
    })
    console.log("test2")
})

app.listen(port, () => {
    console.log(`app listening at http://localhost:${port}`)
})
test1
test2

express是否应该阻止服务继续运行,因为起源是不允许的?如果express代码即使前端得到错误仍在执行,这难道不是一个安全威胁吗?

共有1个答案

邢项禹
2023-03-14

在浏览器实现中有两种类型的CORs请求,使用哪种请求取决于所发出的特定请求

对于不需要预飞行的请求,向后端发出请求,然后浏览器检查结果头,以查看是否允许CORs请求。如果不允许(如您所示的情况),那么请求的结果将被客户机阻止,因此客户机无法看到请求的结果(即使服务器完全处理了它)。

据我所知,从你所展示的情况来看,这里的一切都在按预期进行。该请求被视为“简单请求”,不需要预先飞行。基于浏览器的Javascript将不被允许从这个路径获得结果,如果它不是相同的来源。

你可以在这里看到什么触发了飞行前。

据推测,浏览器并不总是使用预飞行,因为它的效率较低(需要双倍的请求)。

 类似资料:
  • 火狐: 跨来源请求被阻止:相同来源策略不允许读取位于[url]的远程资源(原因:缺少CORS头'Access-Control-Allog-Origin')。 铬:

  • 问题内容: 我在wp主题中设置了基本的wordpress ajax示例。触发是由modernizr.js检查页面上的媒体查询来完成的。 我已经本地化了脚本并使其入队。 最后处理请求的函数是: 这总是使我的响应为0(无属性),我也不知道为什么。PS这都是本地的。 问题答案: 一切都必须在这里匹配: PHP JS

  • 当我使用axios发送XMLHttpRequest时,就会发生这种情况。 错误:XMLHttpRequest无法加载https://nuxt-auth-routes.glitch.me/api/login。对飞行前请求的响应没有通过访问控制检查:在所请求的资源上没有“访问-控制-允许-起源”标头。因此,不允许访问源'http://localhost:3000'。

  • 我试图将我的Springmvc项目转换为Spring启动。我根据Spring启动转换了所有必要的文件。控制台上没有错误。但是当我在浏览器中运行我的网络应用程序时,我得到了这个错误。 在名为“DispatcherServlet”的DispatcherServlet中找不到URI为[/onlineshopping/WEB-INF/views/page.jsp]的HTTP请求的映射 我尝试运行的任何ur

  • 和错误处理方法为: customer.java(模型): json数据: 我可以捕获HttpMessageNotReadableException并进行处理。 错误处理已更改的方法。 但是,继承来创建基类或在所有控制器中编写这段代码感觉我没有看到spring的设计概念,因为它决定在那里处理以创建一个新的ExceptionResolver。 谢谢,

  • 是的,我发现了很多类似的东西,但仍然没有解决我的例子。我想避免杀死浏览器端的安全性,而是让代理来完成它的工作,但我担心我在设置中错过了一些无聊的细节,我不是CORS专家。 所以,我得到的是...403; 其中是我的api url,是默认的Angular CLI实例。 ....除了我仍然得到403,并且仍然在request*头中看到; 所以我的问题是,我在这里遗漏了什么无聊的细节?我不想在所有来源的