javascript - 启用了 CORS 但仍然得到 405

标签 javascript asp.net-mvc asp.net-web-api cors

我正在编写一个快速而肮脏的小脚本来记录静态 HTML 页面上的流量。我正在向托管 API 的另一台服务器发送 POST。服务器启用了 CORS(请参阅下面的代码),但我仍然收到 405。

    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, PATCH, DELETE, OPTIONS" />

这是我的 JavaScript:

  var host = window.location.host;
  var hostname = window.location.hostname;
  var href = window.location.href;
  var port = window.location.port;
  var path = window.location.pathname;
  var referrer = document.referrer;

  var obj = { 
    Host: host,
    HostName: hostname,
    Href: href,
    Port: port,
    Path: path,
    Referrer: referrer
  };

  $.ajax({
    type: 'POST',
    url: 'http://localhost/system/api/sp/logvisit',
    data: obj,
    dataType: 'json',
    contentType: 'application/json'
  });

这是我的 Controller :

namespace Gs.Api
{
    public class SPController : ApiController
    {
        [Route("api/sp/logvisit")]
        [HttpPost]
        public void LogVisit(LogVisitRequest request)
        {
            // do stuff with request
        }
    }
}

我在这里尝试了主要答案 Handling CORS Preflight requests to ASP.NET MVC actions它摆脱了 405 但我的方法实际上从未被调用过。我在这里尝试了各种答案的其他几个修复,有些修复了错误,但我发布的对象将为空。

最佳答案

这是我自己想出来的。我不得不采取其他一些解决方案并将它们一起使用,但我终于明白了。

  1. 我使用了这个答案:https://stackoverflow.com/a/13646169/3920075
  2. 我改变了<add name="Access-Control-Allow-Headers" value="*" /><add name="Access-Control-Allow-Headers" value="Content-Type" /> .
  3. 我改变了data: obj , 至 data: JSON.stringify(obj)

关于javascript - 启用了 CORS 但仍然得到 405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45379696/

相关文章:

javascript - 寻找 Azure 服务来管理网络推送通知

javascript - 从 JSON 对象中删除重复值

Javascript 依赖管理和打包

javascript - 在apache上使用nodeJS发送文件

asp.net-mvc - 使用 ASP.New MVC 4 Web Api 进行授权过滤器依赖注入(inject)

javascript - 使用 Kendo UI 数据源的授权 header 拦截器

javascript - 如何在 SignalR 上获取已连接客户端的列表

asp.net-mvc - MVC - bootstrap -form 控件与 form-group 一起出现在下一行

asp.net - 如何将最新的 TFS 变更集编号插入 aspx 页面?

c# - 通过处理程序下载 WebApi 文件