如何在不启用CORS但允许任何域访问的情况下托管ASP.NET WebAPI应用程序?

时间:2018-03-28 16:41:33

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

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

我想允许从任何域调用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的原因。

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

1 个答案:

答案 0 :(得分:1)

您可以实现的一个解决方案是在API的域中创建类似于Facade的代理j。

例如,您有一个WebAPI域api.example.com 因此,创建一个js-library(facade)来实现该API的使用逻辑。 该网址为http://api.example.com/script.js

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