我有一个MVC5 ViewController,它不接受来自Ajax调用的头部。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 API2控制器的WebApi,则报头没有问题。如果我向mvc控制器发送一个带有postman的请求,那么报头也是正常的。
头部包含头部Access-Control-Request- Headers,其值为authorization。但Request.Headers“授权”为空。
像X-MyHeader这样的自定义标头作为来自Access-Control-Request-Headers的值出现,但当像键一样使用时,它们都是空的。
我漏掉了哪一部分?
发布于 2018-11-02 20:24:48
我也有同样的问题--但这可能会解决你的问题
Microsoft.AspNet.WebApi.Cors from NuGet -在您的软件包管理器控制台中运行此命令(Install-Package Microsoft.AspNet.WebApi.Cors) -这将安装您的CorsWeb.config文件中删除var cors = new EnableCorsAttribute("*", "*", "*", "*"); config.EnableCors(cors);
您可能想知道EnableCors()方法将从哪里来,在您的使用中添加下面这行代码,就会看到它的神奇之处
这可能会解决您的问题-最后,从不同的域访问您的MVC控制器不是一个好主意。尝试使用WebApi。
如果你想访问你的MVC控制器,试试你的ajax代码,因为WebApi是无状态的,但是MVC是一种会话-谢谢,快乐的编码!!
https://stackoverflow.com/questions/53117833
复制相似问题