javascript - header无法使用跨域传入ajax

标签 javascript c# jquery asp.net-mvc cross-domain

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

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization

Api工程中的操作方法如下,

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

在 Mvc 项目中如下调用 ajax,

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

但仍显示如下错误,

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

但没有标题它工作正常。我还需要传递 header 。所以请提出任何建议。

谢谢...

最佳答案

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

不清楚您如何在 Web.Config 中启用 header 或您使用什么来托管您的服务,因此很难提出确切的解决方案。如果您使用的是 IIS,请查看 - enabling cross-origin resource sharing on IIS7确保 OPTIONS 未被 IIS 阻止。您可能需要删除现有的处理程序或启用选项。

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

关于javascript - header无法使用跨域传入ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44501721/

相关文章:

javascript - 第二次单击按钮

jquery - 是否有一个 javascript(jQuery) 插件可以无缝隐藏/显示 flash swf?

javascript - push()中插入子节点数组的问题

c# - 如何通过智能卡进行身份验证作为 httpClint/httpListener 中 Windows 身份验证的回退

c# - 为什么对ref return属性的动态调用会引发异常?

javascript - 在滚动条上更改图像 Logo

javascript - 使用Jquery如何添加第一个子元素的背景颜色

javascript - javascript 中的两个玩家的剪刀石头布

javascript - 获取 "jQuery("a.raf_link").fancybox 不是函数"错误?

c# - 如何添加对 Microsoft.VisualBasic.dll 的引用?