标头无法使用跨域传入 ajax



我已经为我的网站使用了两个项目。一个用于 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;
}

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

$.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

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

谢谢。。。

需要启用选项方法才能成功执行"选项"预检请求,这反过来又需要发送授权标头。

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

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

Chrome 将发送预检请求(OPTIONS方法(来查找 CORS 标头,然后发送 POST 请求。

但是你不允许OPTION方法。

尝试

Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS

相关内容

  • 没有找到相关文章

最新更新