【问题标题】:How to host ASP.NET WebAPI application without enabling CORS, but allowing access by any domain?如何在不启用 CORS 但允许任何域访问的情况下托管 ASP.NET WebAPI 应用程序?
【发布时间】:2018-09-07 11:05:31
【问题描述】:

我正在尝试启动并运行一个新项目,我需要它来调用我在另一个项目中编写的现有 Web 服务。最终我的项目将被移动到与 Web 服务相同的 webapp 中,因此不会以这种方式在生产环境中运行。

我想允许从任何域调用 Web 服务。我在 web.config 中设置了以下自定义标头:

    <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" />
            <add name="Access-Control-Allow-Credentials" value="true" />
        </customHeaders>
    </httpProtocol> 

这确实显示在 IIS 管理器中,但似乎对调用没有影响。我在调用服务时仍然收到以下错误:

"The requested resource does not support http method 'OPTIONS'."

正如我所说,我只需要在开发中使用它。我的 Web 服务项目与 Microsoft CORS 库不兼容,这就是为什么我不能只启用 CORS。

编辑 我正在使用 asp.net WebAPI2 为我的应用程序提供 REST 端点。我只需要知道如何配置它们以允许任何域在不使用 CORS 的情况下访问它们。

【问题讨论】:

  • 您需要从您的 Web api 应用程序访问您的 Web 服务吗?这是你的问题吗?
  • 所以我有两台网络服务器:一台在端口 80 上,一台在端口 4200 上。网络服务托管在端口 80 上,应用程序在 4200 上运行。它们是完全不同的应用程序。
  • 您应该能够将 Web 服务引用添加到您的 Web api 项目中。
  • @Hackerman 不,我不能。我的 Web 服务托管在 asp.net 中,但我通过 Angular CLI 运行我的应用程序。我不需要找到组合项目的方法,我需要一种方法来使这个场景工作。
  • 你应该删除asp.net-web-api标签并添加angular标签......并尝试在你的问题中添加尽可能多的细节......我会给它一个稍后拍摄!

标签: asp.net web-services cors cross-domain


【解决方案1】:

您可以实施的一种解决方案是在您的 API 域上创建一个代理 js,就像外观一样。

例如,您有一个 WebAPI 域 api.example.com 因此,创建一个实现该 API 使用逻辑的 js 库(外观)。 网址将是http://api.example.com/script.js

因此,将该文件包含到每个项目中,并通过该 js-facade 使用您的 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2016-03-23
    • 2019-12-17
    • 1970-01-01
    相关资源
    最近更新 更多