CORS标题'Access-Control-Allow-Origin'缺失'。我需要在webapi(服务)或客户端编写代码

时间:2016-12-30 09:22:17

标签: javascript jquery angularjs ajax asp.net-web-api

我有一个web api,它具有基本身份验证。那个api代码我不能改变。我们可以添加cors概念来检测客户端应用程序中的数据,无论是在web.config中还是在客户端应用程序中启用CORS来解决跨源请求被阻止的问题:同源策略不允许读取远程资源https://example.com/abc。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

  <button type="button" class="btn btn-info btn-flat bg_blue"  @click="addCheckbox"><i class="fa fa-plus"></i> Add feature</button>
  }
}

3 个答案:

答案 0 :(得分:1)

您需要在WebApiConfig

中添加以下两行
var cors = new EnableCorsAttribute("....", "*", "*");
config.EnableCors(cors);

"..."应包含您的网络应用的网址。

有关更多信息和替代方案,请查看here

此外,客户端无需设置以下内容:

'Access-Control-Allow-Origin': '*'

答案 1 :(得分:0)

如果Web服务器是IIS。您可以编辑web.confg。

<system.webServer>
 <httpProtocol>
  <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
 </httpProtocol>
</system.webServer>

答案 2 :(得分:0)

如果你正在使用Asp.NET WEBAPI,你可以解决问题..而不是在客户端设置..但是直接在服务器中...尝试放入你的StartUp.cs

using Microsoft.Owin;
using Owin;

  public void Configuration(IAppBuilder app)
        {
            app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
            ConfigureAuth(app);

        }

在您的WebConfig中的部分内容如下:

<handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <remove name="OPTIONSVerbHandler"/>
      <remove name="TRACEVerbHandler"/>
      <remove name="WebDAV"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>

希望它可以帮到你