【问题标题】:ASP.NET Web API: No 'Access-Control-Allow-Origin' header is present on the requested resourceASP.NET Web API:请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2020-11-06 18:51:11
【问题描述】:

我正在尝试让我的客户端(在本地主机上)成功调用我的服务器(也在本地运行),但没有成功。我已经尝试了几乎所有可以在网上找到的解决方案,但都没有成功,对服务器的 Postman 调用是成功的,对其他已发布服务的类似前端调用也是成功的。希望陌生人的奇迹/帮助!

所以我目前的设置如下:

在 Global.asax 我有 -

public class Global : HttpApplication
{
    protected void Application_Start()
    {
        WebApiConfig.Register(GlobalConfiguration.Configuration);

    }

    protected void Application_BeginRequest()
    {
        if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
        {
            Response.Flush();
        }
    }
}

在 WebApi.Config 中 -

public static void Register(HttpConfiguration config)
    {
        AddRoutes(config);
        var cors = new EnableCorsAttribute("http://localhost:4201", "*", "*");
        config.EnableCors(cors);
    }

使用 System.Web.Http.Cors 导入...

在 Web.Config 我有 -

 <system.webServer>
 <handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
  <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>

注意,我在 Safari 和 Chrome 上都试过了(连同 Chrome 的 CORS 扩展)。 我遇到了所有这些错误,但鉴于我的其他测试,我认为这实际上是 CORS 问题......

任何提示或建议将不胜感激

【问题讨论】:

    标签: asp.net-web-api server cors localhost


    【解决方案1】:

    如果有人觉得这很有帮助......在尝试了我认为的一切之后,我将以下内容添加到 Global.asax:

    protected void Application_BeginRequest()
        {
            if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
            {
                Response.Headers.Add("Access-Control-Allow-Origin", "*");
                Response.Headers.Add("Access-Control-Allow-Headers",
                    "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
                Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
                Response.Headers.Add("Access-Control-Allow-Credentials", "true");
                Response.Flush();
                
            }
        }
    

    我不确定这是否必须与我在问题中发布的所有其他内容相结合,但现在我太高兴了,无法完成消除过程。祝你好运

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 2013-11-29
      • 2014-07-28
      • 2014-01-19
      相关资源
      最近更新 更多