【问题标题】:Even after adding the Access-Control-Allow-Origin setting in web.config still getting the No Access-Control-Allow-Origin error in ajax call即使在 web.config 中添加 Access-Control-Allow-Origin 设置后,ajax 调用中仍然出现 No Access-Control-Allow-Origin 错误
【发布时间】:2017-08-04 10:38:12
【问题描述】:

您好,我有一个对 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) {
});

【问题讨论】:

  • 您使用的是哪个版本的 Web API?如果 >=2.0,那么这是在 Web API 中启用 CORS 的推荐方式:docs.microsoft.com/en-us/aspnet/web-api/overview/security/…
  • 我已经启用了文档中提到的 cors,但仍然无法正常工作
  • 尝试在web.config中添加:
  • 我也添加了,但它仍然无法正常工作。实际上我的 web api 是另一个项目,而 ajax 调用在另一个项目中
  • 从 web.config 中删除 CORS 配置并查看我的答案。为了测试 CORS,您确实需要将 javascript ajax 调用放在另一个项目中。

标签: ajax asp.net-web-api


【解决方案1】:

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

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

  1. 使用 nuget 安装此软件包:Install-Package Microsoft.AspNet.WebApi.Cors
  2. 在 App_Start/WebApiConfig.cs 中,将此行添加为 Register 方法的第一行:config.EnableCors();
  3. 在你的值控制器中添加这个属性:[EnableCors(origins: "", headers: "", methods: "*")] 所以控制器看起来像这样:

    [EnableCors(origins: "", headers: "", methods: "*")]

    公共类 ValuesController : ApiController {...}

【讨论】:

  • 我也试过你的答案,但仍然无法得到它。
【解决方案2】:

你可以使用web api cors,看我的回答:

ASP.net WEB API CORS 404 error

基本上 - 欧文

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

网页配置

<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,请看我的回答。

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 2017-06-15
    • 2017-12-16
    • 1970-01-01
    • 2018-12-12
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    相关资源
    最近更新 更多