【问题标题】:C# and Angular - Cross Origin ErrorC# 和 Angular - 跨源错误
【发布时间】:2018-11-19 17:03:59
【问题描述】:

我们正在使用 Angular 5 开发网站。后端已使用 .Net Web API 和 SQL Server 开发。该网站将部署在 Azure 上,可以从 Internet 和 Intranet 访问。

我们已经配置了 CROSS Origin 设置并且工作正常。现在我们已经使用 SAML 集成了 Ping 联合 SSO。现在站点被重定向到第 3 方登录页面并给出错误 “资源上不存在访问控制允许区域标头。因此不允许访问 Origin null”。在重定向到登录页面之前,不允许 Null”。通过指定用逗号分隔的多个来源进行了尝试,但仍然出现相同的错误。下面是示例代码。

var cors = new EnableCorsAttribute("http://localhost:4200", "*", "*");
cors.Origins.Add("https://3rd party url");  
config.EnableCors(cors);

如果通过键入 url 直接从 web api 访问 SSO,则同样可以正常工作。请提供解决此问题的任何指示。

【问题讨论】:

    标签: c# angular azure asp.net-web-api cross-domain


    【解决方案1】:

    您可以在客户端中使用代理并将客户端的来源更改为您想要的任何内容。

    此解决方案的优点是:

    1. 您无需在后端定义 CORS(提高安全性)
    2. 您无需担心您的客户端,您只需通过 npm start 运行您的项目,只要您想发布您的应用程序,您就可以运行 ng build 命令和代理将从您的设置中被忽略。

    为了使用代理

    1. 编辑您的package.json 中的"start" 以查看下方

      "start": "ng serve --proxy-config proxy.conf.json",

    2. 在项目的根目录中创建一个名为proxy.conf.json 的新文件,并在其中定义您的代理,如下所示

      {
        "/api/*": {
          "target": "http://localhost:56492",
          "secure": "false"
        }
      }
      
    3. 重要的是你使用npm start而不是ng serve

    现在在您的 service.ts 中,发布/获取请求 url 而不是 localhost:56492/... 只需键入 /api/Film。

    从这里阅读更多信息:Proxy Setup angular 2 cli

    【讨论】:

    • 这种方法不起作用,我仍然遇到同样的错误。
    猜你喜欢
    • 2021-05-16
    • 2012-01-17
    • 1970-01-01
    • 2017-01-06
    • 2019-02-21
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2020-08-05
    相关资源
    最近更新 更多