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

asp。net web api角CORS飞行前问题与POST请求

汪德明
2023-03-14

我有一个配置为使用WINDOWS AUTHENTICATION的webapi。

var cors = new EnableCorsAttribute(origen, "*", "*") { SupportsCredentials = true };
            config.EnableCors(cors);

在我的angular应用程序中,我有以下方法:

让方法完美地工作。

result.CargarAreas = function (callBack, onError) {

        //url = WebApi + "Personas";
        var url = constants.apiPath + "Areas";

        //$http.get(url, { headers: { "Access-Control-Allow-Origin": constants.serverPath } })
        $http.get(url, {
            withCredentials: true
        })
        .then(function (data) {
            callBack(data);
        })
        .catch(function (data) {
            onError(data);
        });
    };

POST方法给了我以下错误:

result.GuardarContacto = function (callBack, onError, data) {

        //url = WebApi + "Contactos";
        var url = constants.apiPath + "Contactos";

        $http.post(url, data, { headers: { "Access-Control-Allow-Origin": constants.serverPath } })

        .then(function (data) {
            callBack(data);
        })
        .catch(function (data) {
            onError(data);
        });
    };

最后介绍了webapi方法

[HttpGet]
        [Route("api/AutenticationSite")]
        public IHttpActionResult AutenticationSite()
        {
            string user = HttpContext.Current.Request.LogonUserIdentity.Name.ToString();
            string[] subUser = user.Split('\\');
            bool respuesta = UsuariosDao.Authorize(subUser[1]);

            if (respuesta == true)
            {
                return Ok("Authenticated: " + user);
            }
            else
            {
                return BadRequest("Not authenticated" );
            }
        }

还有我们几个小时来一直在努力的那个该死的错误:

无法加载XMLHttpRequesthttp://a.b.com/api/Contactos.对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://a.b.com因此,不允许访问。响应的HTTP状态代码为401。

更新1

有关请求和响应的信息

请求URL:http://a.b.com/api/Contactos请求方法:OPTIONS状态码:200 OK远程地址:181.143。YY. XX: 80引用策略:no-引用-降级时响应报头(11)请求报头视图源接受:/接受-编码: gzip,放气, sdch接受-语言: es-ES, es; q=0.8访问-控制-请求-报头:内容类型访问-控制-请求-方法: POST缓存-控制: no-ache连接:保持-活着主机:a.b.com起源:<-http://a.b.com/Index.html用户代理:Mozilla/5.0(Windows NT 10.0)

共有1个答案

步衡
2023-03-14

删除角代码中的访问控制标题设置。看起来您在多个位置设置了此标头,因此输出没有,尽管您的web api代码启用了cors。

留心

  • web.config=
 类似资料:
  • 我使用AJAX请求通过POST将数据发送到另一个域。因为我的内容类型不是标准的(它是JSON格式),所以需要一个飞行前请求。(使用请求方法:选项) 如维基百科跨域XHR调用图表中所述 我想知道这是否很费时,因为浏览器将必须到达服务器两次或不?也许这取决于每个浏览器的行为? 通过使用内容类型“纯文本”来避免飞行前请求,我是否获得了一些时间?

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

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

  • 我做了一个请求做一个asp.netwebapi后方法,我不能够得到一个请求变量。 要求 WEB API Fnx 我无法通过两种方式获得var1内容。。。(除非我为此创建了一个类) 我该怎么做?

  • 我有一个Spring Boot/Spring Data REST服务,允许访问许多资源。其中一些资源(例如)可以自由访问,其他资源(例如)需要基本的HTTP身份验证。通过使用CURL测试REST服务,所有工作都按预期进行。当我试图从Angular2 web应用程序访问服务时,问题就会出现。

  • 我从angular调用这个API,但我在飞行前请求上得到了CORS错误。我什么都试过了,但不知道哪里出错了。你知道吗?