即使在web.config中添加Access-Control-Allow-Origin设置后仍然在ajax调用中获得No Access-Control-Allow-Origin错误

时间:2017-08-04 10:38:13

标签: ajax asp.net-web-api

您好我对web api进行了ajax调用,我在web.config文件中添加了设置Access-Control-Allow-Origin,但是在调用api时我仍然遇到同样的错误。 任何人都可以帮助我...

我的web.config设置是

<add name="Access-Control-Allow-Origin" value="*" />

我的ajax电话是

$.ajax({
            url: 'http://localhost:62607/api/Values',
            type: 'GET',
            datatype: 'json',
            async: true,
            responseType: 'json',
            success:
                function (data) {
});

2 个答案:

答案 0 :(得分:0)

如果您遵循本教程:https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

您不需要在web.config中进行任何设置。启用CORS至少需要遵循以下3个步骤:

  1. 使用nuget安装此软件包: 安装包Microsoft.AspNet.WebApi.Cors
  2. 在App_Start / WebApiConfig.cs中,将此行添加为Register方法的第一行: config.EnableCors();
  3. 在您的值控制器中添加此属性:[EnableCors(起源:&#34; &#34;,标题:&#34; &#34;,方法:&# 34; *&#34)] 所以控制器看起来像这样:

    [EnableCors(起源:&#34; &#34;,标题:&#34; &#34;,方法:&#34; *&#34;)]

    public class ValuesController:ApiController {...}

答案 1 :(得分:0)

您可以使用网络API,请参阅我的回答:

<强> ASP.net WEB API CORS 404 error

基本上 - Owin

Install-Package Microsoft.Owin.Cors -Version 3.1.0
app.UseCors(CorsOptions.AllowAll)

Web Config

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

如果你需要system.web,请参阅我的回答。