【发布时间】: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