【问题标题】:Asp.net MVC5 with Angular 2 configuration带有 Angular 2 配置的 Asp.net MVC5
【发布时间】:2017-01-05 07:52:34
【问题描述】:

我是 Angular 2 的初学者。我正在使用 Angular CLI 创建 Angular 项目。我正在单独创建 asp.net MVC Web api 项目。

  • 使用角度 CLI 到 ng serve 命令启动此服务:localhost:4200
  • MVC web api 启动此服务:localhost:65320

当我使用 Angular http get 请求从localhost:65320/api/myservice 下载数据时,出现跨源问题。因为 Angular 项目使用不同的 url。但我将标题添加到Access-Control-Allow-Origin=* 问题已解决。

但是当我使用 http post 请求时总是返回405 method not allowed 出现问题

问题:

  • 如何在 web api 控制器中允许跨源 post 请求?
  • 或者如何配置 Angular CLI 创建的项目与 MVC 项目一起工作?

正确答案:

Web api 跨域问题解决了这篇文章: https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#enable-cors@chandermani 建议

【问题讨论】:

  • 你看过这篇msdn文章asp.net/web-api/overview/security/…
  • @Chandermani 没有。我再看看吧。 tnx
  • @Chandermani 谢谢。您的链接解决了我的跨域请求POST 问题。
  • 太棒了!将您的修复作为答案发布,以便对其进行标记

标签: c# angular asp.net-web-api asp.net-mvc-5 angular-http


【解决方案1】:

您可以通过两种不同的方式在 Web API 中启用 CORS:

  1. 使用 Microsoft.AspNet.WebApi.Cors:按照 Chandermani 指出的教程 https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api 进行操作。
  2. 将以下内容添加到 web.config 中的 system.webServer 元素:

    <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> </customHeaders> </httpProtocol>

【讨论】:

  • 我正在尝试您的选项 2。但 POST 请求总是返回 405 method Not allowed。现在我正在使用Microsoft.AspNet.WebApi.Cors 库解决问题
  • CORS Specification 的某些场景中,客户端使用 OPTIONS 方法向服务器发送预检请求,您可能没有实现该方法,因此不允许使用 405 方法。这是由 Microsoft.AspNet.WebApi.Cors 自动实现的,但在旧版本的 MVC 中不可用。
猜你喜欢
  • 2018-11-14
  • 2018-06-02
  • 2015-02-24
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
相关资源
最近更新 更多