尝试使用JSON将JSON发布到Asp.net Web API服务器时$http
,返回以下错误
XMLHttpRequest cannot load http://localhost:62158/api/video/add.
Response for preflight has invalid HTTP status code 405
但是从$.ajax
工作文件发出相同的请求。
$ HTTP代码
$http.post(url, data, config)
.success(function (data, status, headers, config) {
defered.resolve(data);
})
.error(function (data, status, header, config) {
defered.reject(data);
});
$ .ajax代码
$.ajax({ type: "POST",
url: url,
data: newVideo,
success: function (a) {
debugger;
},
error: function (e) {
debugger;
},
dataType: 'json'
});
ASP.NET Web API代码和配置
web.config
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
WebApiConfig
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
VideoLIbraryDb.Config.setconnection();
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.XmlFormatter);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
}
API控制器
[RoutePrefix("api/video")]
public class VideoController : ApiController
{
[Route("add")]
[HttpPost]
public HttpResponseMessage add([FromBody] db_videos newVideo)
{
HttpStatusCode statusCode = HttpStatusCode.NotFound;
CommonResult result = new CommonResult() /// default
{
code = ResultCodes.retry.ToString(),
message = "Not able to complete request. Retry."
};
if (newVideo.video_file_name == null)
return Request.CreateResponse(statusCode, result);
if (newVideo.video_file_name.Length < 1)
return Request.CreateResponse(statusCode, result);
if (newVideo.insert())
{
statusCode = HttpStatusCode.OK;
result.code = ResultCodes.successfull.ToString();
result.message = "Video is added";
}
return Request.CreateResponse(statusCode, result);
}
}
@Rakeschand* 你是对的,这是 cors 的问题 *
科尔斯
我使用nu-get命令行在我的项目中安装了Cors
Install-Package Microsoft.AspNet.WebApi.Cors
并在App_Start文件夹的WebApiConfig.cs文件中添加了以下代码。
var enableCorsAttribute = new EnableCorsAttribute("*",
"Origin, Content-Type, Accept",
"GET, PUT, POST, DELETE, OPTIONS");
config.EnableCors(enableCorsAttribute);
并从网络配置中删除了以下内容
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Accept, Content-Type, Origin" />
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
$ http开始工作,就像$.ajax
工作一样
但是这些事情使我有些困惑。 如果有人可以详细说明,我将非常满意
$.ajax
工作正常$http
而不工作cors
,web.config
那为什么能cors
奏效却没奏效web.config
呢?问题内容: 我正在使用ionic框架和angularjs,我使用chrome来查看日志,但是在这里,我正在执行一个登录页面,我试图发布用户输入的数据来提供服务,但是却出现了此类错误。 而且这是 阅读一些博客后的下一个错误,我认为这是一个CORS扩展,从该扩展允许我尝试过ajax请求,但是我无法找到为什么会出现这两个错误。这是我的代码 https://plnkr.co/edit/Dz0aFsLqoQ
问题内容: 我知道有很多这样的问题,但是我所见的问题都没有解决。我已经使用了至少3个微框架。所有这些都无法执行简单的POST,它应该将数据返回: angularJS客户端: SlimPHP服务器: 我已启用CORS,并且GET请求有效。html使用服务器发送的JSON内容进行更新。但是我得到了 XMLHttpRequest无法加载 http:// localhost:8080 / server.p
我正在尝试使用Ajax进行REST调用(POST)。这是我的AJAX代码 最初,我得到了这个错误:XMLHttpRequest无法加载http://localhost:port/service/myservice。对preflight请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此不允许访问源“null”。响应的HTTP状态代码为4
我使用作为服务器端的Spring-boot并提供一个虚拟服务进行测试 其中我的serviceCaller.java=
我知道这里已经有很多相同的解决问题, 但不幸的是,它们都没有帮助我:-( 这里是我的问题: 我尝试从本地主机连接到服务器上的REST服务。使用FF REST插件可以正常工作,但我的应用程序会导致以下错误: 选项 http://.../my_REST_Service/ 401 (未经授权) XMLHttpRequest 无法加载 http://.../my_REST_Service/。 印前检查的响
我知道有很多这样的问题,但我见过没有一个能解决我的问题。我已经使用了至少3个微框架。它们在执行一个简单的POST时都失败了,该POST应该返回数据: angularJS客户端: SlimPHP服务器: 我已经启用了CORS,并获得了工作请求。html使用服务器发送的JSON内容进行更新。然而我得到了一个 每次我试着用POST。为什么?