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

CORS策略已阻止角度POST请求:对飞行前请求的响应未通过访问控制检查

锺离德庸
2023-03-14

我已经在后端设置了cors,我只是不知道为什么我收到404错误,当网址是正确的。错误是访问XMLHttpRequest在'http://localhost:3008/api/vehicle'从源'http://localhost:3007'已被阻止CORS策略:响应飞行前请求不通过权限改造检查:它没有HTTP确定状态。我还在下面添加了我的api跨域。请检查下面的示例代码。这个问题的解决办法是什么?是什么导致了这个问题?我已经在后端设置了cors,我只是不知道为什么我收到404错误,当网址是正确的。错误是在'http://localhost:3008/api/vehicle'访问来自来源'http://localhost:3007'已被CORS策略阻止:对预飞行请求的响应不通过权限改造检查:它没有HTTP确定状态。我还在下面添加了我的api跨域。请检查下面的示例代码。这个问题的解决办法是什么?是什么导致了这个问题?

有什么想法吗?

save(vehicle: Vehicle){

    return this.http.post(

        CONSTANST.routes.person.save,
        {
            Stock: vehicle.Stock,
            VIN: vehicle.VIN,
            age: vehicle.age,
            gender: vehicle.gender,
        },                
    );
}
const HOST ='http://localhost:3008'

export const CONSTANST = {
    permissions:{},
    routes:{
        authorization:{
            login: HOST + '/api/app/signin-email',
            logout: HOST + '/api/auth/logout'
        },
        person:{
            list: HOST + '/api/vehicle',
            save: HOST + '/api/vehicle',
        },
        user: {}
    },
    lang:{},
    session:{},
    parameters:{}
};
if (process.env.NODE_ENV !== 'production') {
    console.log('------------------------------------------------');
    console.log('Notice: Enabling CORS for development.');
    console.log('------------------------------------------------');
    app.all('*', function (req, res, next) {
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Methods', 'GET, POST');
        res.header('Access-Control-Allow-Headers', 'Content-Type');
        next();
    });
}
app.get('/api/vehicle',  keystone.middleware.api, routes.api.vehicle.list);
    app.post('/api/vehicle',  keystone.middleware.api ,routes.api.vehicle.create);

共有2个答案

宓文斌
2023-03-14

在我的例子中,我想删除的对象的id后面缺少一个尾随斜杠。

如果使用Django Rest Framework作为后端,请确保已设置ALLOWED_HOSTS。您可能还想使用django-cors-Headers应用程序

归鸿朗
2023-03-14

在你的例子中,url可能是正确的,但是你在api路由中没有为“选项”请求方法配置处理程序。它应该像您为GET或POST请求所做的那样进行配置。因此,您收到404对飞行前请求的回复。

app.options('/api/vehicle',  keystone.middleware.api ,routes.api.vehicle.create);

但是你不需要用逻辑传递你的回调,因为你会执行你的逻辑两次。

此外,我可以建议您为所有路线做一个选项处理程序:

app.options('*', someSimpleCallback);
 类似资料:
  • 我已经创建了一个应用程序,使用角和springboot进行Spring安全的基本身份验证,但我得到401错误...我是springboot新手 “从源'http://localhost:4200'访问'http://localhost:8080/hello-world/path-variable/MSD'的XMLHttpRequest已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有

  • 问题内容: 我已经创建了旅行服务器。它工作正常,我们可以通过Insomnia 进行请求,但是当我们通过前端的axios 进行请求时,它将发送错误: 我们对axios的要求: 我的文件: 就像我之前在Insomnia上所说的那样,它工作得很好,但是当我们发出axios 请求时,在浏览器的控制台上会显示以下内容: 已被CORS政策阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。 问题

  • 我正在使用reactjs前端,在后端使用Spring Boot。我尝试从前端调用endpoint,如下所示: 当我发出请求时,我得到以下错误:- 访问位于“”的XMLHttpRequesthttp://localhost:8000/ckcapp/api/posttest“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在

  • 我在做这个请求: 但在执行该方法时,我遇到了以下错误:访问'http://localhost:8083/uaa/addPermission/group/2“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。我已经有了CORS Chrome插件,我可以做其他类型的请求,比如POST和GET,接收请求的方法有@Cro

  • 我使用Angular6作为网页前端工程师运行超文本传输协议://localhost:4200和Spring Boot(内置Tomcat服务器)作为后端(公开一个GET Rest API)运行在https:// localhost:8083/ldap。当我运行这个,我得到CORS策略错误的浏览器。所以我在网上搜索并尝试了网上建议的多个修复程序。我不确定我在下面的每个解决方案中错过了什么。 不成功修复

  • 我已经找了5个小时左右,但我放弃了。我的ajax get请求不起作用。 它连接到标准的C#mvc api,但我得到的只是这个错误: 无法加载XMLHttpRequesthttp://localhost:18428/api/Reservation/1?weekNumber=1. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost因