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