gpt4 book ai didi

javascript - 预检响应具有无效的 HTTP 状态代码 400 - aspx

转载 作者:行者123 更新时间:2023-12-02 13:46:54 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2015 编写服务器和客户端。Chrome 和 FireFox 中会出现以下问题,但在 Explorer 中运行正常。我正在使用 AJAX 对我的服务器进行 Rest post 调用,AJAX 代码:

function CheckIntegrityExecution() {
var request = ...
var reqJson = JSON.stringify(request);
$.ajax({
type: "POST",
url: "http://localhost:55857/api/post/flow",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: reqJson,
success: function (jsonData) {
...
},
error: function () {
alert("error");
}
});
}

最初我收到 405 错误,通过添加解决了这个问题

    var cors = new EnableCorsAttribute("http://localhost:55857", "*", "*");
config.EnableCors(cors);

到 Global.asax 中的 Register 函数:

public static void Register(HttpConfiguration config)

现在我收到以下错误:

XMLHttpRequest cannot load http://localhost:55857/api/post/flow. Response for preflight has invalid HTTP status code 400

我的服务器中的方法签名是

[Route("api/post/flow")]
public HttpResponseMessage PostCommand([FromBody] dynamic value)

我在 WebApi 的 Web.config 中有这些配置。

  <customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" />
<add name="Access-Control-Allow-Headers" value="Origin, Content-Type, Authorization, Accept, X-Requested-With" />
</customHeaders>

我注意到如果我删除

contentType: "application/json; charset=utf-8",

我将通过 Ajax 请求工作,但不会在服务器中获取数据。

我不知道该怎么做,尝试了一切。

最佳答案

解决方案是将以下内容添加到 Global.asax 文件

protected void Application_BeginRequest()
{
var context = HttpContext.Current;
var response = context.Response;


if (context.Request.HttpMethod == "OPTIONS")
{
response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
response.End();
}
}

关于javascript - 预检响应具有无效的 HTTP 状态代码 400 - aspx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41328995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com