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