angularjs - Angular JS-$Http Post 不适用于 chrome/FireFox,但 $http.get 工作正常

标签 angularjs http post asp.net-web-api

您好,我正在尝试将一些数据发布到我的 WebAPI,但是出现错误“无法加载资源:服务器响应状态为 405(方法不允许)”

这是我的 Angular 调用:

var req= {
                    url: appSettings.basePath + '/api/Location/PostSearch',
                    headers: { 'Content-Type': 'application/json' },
                    //datatype: 'Json',
                    data: SearchInfo,
                    method: 'POST'
                  }
               return $http(req);

我的 API:

public int PostSearch(Search Obj)

{
            Obj.Location = ReplaceDefaultValuesWithBlank(Obj.Location);
            Obj.Sublocation = ReplaceDefaultValuesWithBlank(Obj.Sublocation);
            Obj.PublicationCategory = ReplaceDefaultValuesWithBlank(Obj.PublicationCategory);
            Obj.PublicationName = ReplaceDefaultValuesWithBlank(Obj.PublicationName);
            int IsAdded = Db.USP_SaveSearch(Obj.SSO ?? "", Obj.SearchName ?? "", Obj.Location ?? "", Obj.Sublocation ?? "", Obj.PublicationCategory ?? "", Obj.PublicationName ?? "", Obj.FileNameFilterText ?? "", Obj.Content ?? "", Obj.DateRange ?? "");
            return IsAdded;
        }

不确定是什么问题,Call 在 IE 上工作正常但在 Chrome/FireFox 上不工作,

我没有看到 CORS 有任何问题,因为“GET”工作得很好,这是否与我在 webAPI 中引入的自定义路由有关

WebAPIConfig.cs:

public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
               name: "DefaultApiWithAction",
               routeTemplate: "Api/{controller}/{action}"
                );

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

请帮助我,我花了很多时间进行故障排除仍然卡住了。

最佳答案

在 OPTIONS 上获得 405:Deduction-> OPTIONS 请求('Preflight')仅使用 POST 发送 CORS 请求。这很可能是 CORS 问题。 – Marvin Smit 昨天

关于angularjs - Angular JS-$Http Post 不适用于 chrome/FireFox,但 $http.get 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32047272/

相关文章:

java - Apache HTTP : How to set custom ContentType

python - 在功能齐全的 django 应用程序中测试 POST 时出现 405 错误

javascript - 如何将变量值从一个 Controller 传递到另一个 Controller ?

c# - 如何将对象数组传递给 $http.get 参数

javascript - Angular 1.5.4 $http 进度事件

php - 如何使用 ffmpeg/php 在按钮单击时将 mp4 文件转换为 mp3?

php - Cookie 造成麻烦 - 无法让 cookie 停留

javascript - 如何在同一个 Angular JS 应用程序中使用具有不同身份验证 header 的不同 API

javascript - Node js不响应请求远程服务器

ios - 通过 iOS 将用户和密码发送到网页