标头无法使用跨域传递ajax

Aru*_*n D 5 javascript c# asp.net-mvc jquery cross-domain

我为我的网站使用了两个项目.一个用于Mvc项目和Api项目.我在web.config文件中添加了以下代码,该文件位于Api项目中,

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Run Code Online (Sandbox Code Playgroud)

Api项目中的动作方法如下,

[HttpPost]
[Route("api/ajaxapi/caselistmethod")]
public List<CaseValues> AjaxCaseListMethod()
{
            List<CaseValues> caseList = new List<CaseValues>();
            return caseList;
}
Run Code Online (Sandbox Code Playgroud)

和ajax调用如下,这是在Mvc项目中,

$.ajax({
            type: "POST",
            url: "http://localhost:55016/api/ajaxapi/caselistmethod",
            beforeSend: function (request) {
                request.setRequestHeader("Authorization", getCookie("Token"));
            },
            success: function (response) {
            }
});
Run Code Online (Sandbox Code Playgroud)

但是显示如下错误,

选项http:// localhost:55016/api/ajaxapi/caselistmethod 405(方法不允许)XMLHttpRequest无法加载http:// localhost:55016/api/ajaxapi/caselistmethod.预检的响应具有无效的HTTP状态代码405

但没有Header工作正常.我也需要传递标题.所以请提出任何建议.

谢谢...

Ale*_*kov 3

需要启用选项方法才能使“选项”飞行前请求成功,而这又需要发送授权标头。

目前尚不清楚如何在 Web.Config 中启用标头或使用什么来托管服务,因此很难提出确切的解决方案。如果您使用 IIS,请检查 -在 IIS7 上启用跨源资源共享,以确保 OPTIONS 不会被 IIS 阻止。您可能需要删除现有的处理程序或启用选项。

或者,您可以在方法上使用 EnableCors 属性来允许为该路由启用“选项”。