【问题标题】:No custom/authorization Headers in MVC 5 controllerMVC 5 控制器中没有自定义/授权标头
【发布时间】:2019-04-06 15:42:36
【问题描述】:

我有一个不接受来自 Ajax 调用的标头的 MVC 5 ViewController。 ajax 调用来源是与控制器不同的网站。

Ajax 调用如下所示:

window.jQuery.ajax({
       url: 'http://localhost:54155/TestView',
       headers: {'Authorization': 'token'},
       cache: false,
       contentType: 'application/json; charset=utf-8',
       method: 'Get',     
       dataType: 'json',
       data: {}
    }).success(alert('succes?'))
        .error(alert('failed'))
    });

在控制器端启用了 Cors:

<httpProtocol>
      <customHeaders>        
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="*"/>
        <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />       
      </customHeaders>
    </httpProtocol>

我正在尝试访问这个控制器:

public class TestViewController : Controller
    {           
        public ActionResult Index()
        {
           var keys = Request.Headers.AllKeys;
           return View();
        }
    }

如果我将请求发送到基于 WEP API 2 控制器的 WebApi,则标头是可以的。如果我使用邮递员向 mvc 控制器发送请求,则标头也可以。

Headers 包含头 Access-Control-Request-Headers,其值为授权。但 Request.Headers["Authorization"] 为空。

像 X-MyHeader 这样的自定义标头作为 Access-Control-Request-Headers 的值出现,但是当用作键时,它们都是空的。

我错过了哪一部分?

【问题讨论】:

    标签: ajax asp.net-mvc http-headers


    【解决方案1】:

    我遇到了同样的问题 - 但这可能会解决您的问题

    1. 从 NuGet 安装 Microsoft.AspNet.WebApi.Cors - 运行此命令 (Install-Package Microsoft.AspNet.WebApi.Cors) 在您的包裹中 管理控制台 - 这将安装您的 Cors

    2. 从您的 Web.config 文件中删除您的访问允许源代码

    3. 如果是 Web Api,请将以下代码添加到您的 WebApiConfig.cs,如果不是,请尝试添加到您的 Gloabl.asax

    var cors = new EnableCorsAttribute("*", "*", "*", "*"); config.EnableCors(cors);

    你会想知道EnableCors() 方法会在哪里出现using System.Web.Http.Cors; 在你的使用中添加这一行,看看魔法

    这可能会解决您的问题 - 最后,从不同的域访问您的 MVC 控制器不是一个好主意,请尝试使用 WebApi

    如果您想访问您的 MVC 控制器,请尝试使用同一域中的 ajax 代码 因为 WebApi 是无状态的,但 MVC 是一种会话 - 感谢愉快的编码!

    【讨论】:

      猜你喜欢
      • 2017-07-23
      • 2017-04-08
      • 2011-12-09
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2014-07-24
      相关资源
      最近更新 更多