首页 > 解决方案 > Angular 发布请求 Cors 问题

问题描述

当我尝试向 c# web api 发出发布请求时遇到了 CORS 问题。以下是错误:

从源“客户端 url”访问“不同域中的 api url”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:不存在“Access-Control-Allow-Origin”标头请求的资源。

与GET 请求相同的 API 调用正在工作。

这两个站点都部署了启用 Windows 身份验证。

我正在使用带有打字稿的 Angular io, 1.7.**。下面是我如何在打字稿中使用 post 请求调用 api。

let httpHeader = new HttpHeaders();
httpHeader = httpHeader.set('Content-Type', 'application/json');

this.http.post(this.apiUrl, this.bodyObject,
  {
  headers: httpHeader,
  withCredentials:true
}).pipe(map(response => {
  return response;
})).subscribe(result => {
  console.log(result);
}, function (err) {
  console.log(err);
});

我首先认为这可能是 api cors 问题并使用下面的 jquery 代码进行了测试,并且它正在工作。

   <script>

       $.ajax({
            url:apiUrl,
            type: 'post',
            data: {
                serviceName: "Country"
            },
            xhrFields: {
                    withCredentials: true
                },
            dataType: 'json',
            success: function (data) {
                console.info(data);
            },
            error: function (err) {
                console.error(err);
            }
        });

  </script>

所以我认为,我与我的角度代码有关。你能强调我可能是什么问题。

标签: c#angularasp.net-web-api

解决方案


尝试将其添加到 $.ajax

headers: {
                    'Access-Control-Allow-Origin': '*',
                    'Content-Type':'application/json'
          },
crossDomain: true,

推荐阅读