C#和角度 - 交叉原点错误

时间:2018-06-10 05:45:27

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

我们正在开发Angular 5中的网站。后端是使用.Net Web API和SQL Server开发的。该网站将部署在Azure上,可以从互联网和内部网访问。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

此解决方案的优点是:

  1. 您不需要在后端定义CORS(增加安全性)
  2. 您不必担心您的客户以及您只是通过 npm start 运行您的项目,只要您想要发布您的应用程序就可以运行您的设置将忽略ng build 命令和代理。
  3. 使用代理

    1. 修改"start"的{​​{1}}以查看下方

      package.json

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

      proxy.conf.json
    3. 重要的是您使用{ "/api/*": { "target": "http://localhost:56492", "secure": "false" } } 代替npm start

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

      从这里阅读更多内容:Proxy Setup angular 2 cli