gpt4 book ai didi

c# - CORS 实现显示 POST 请求不允许的方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:05 25 4
gpt4 key购买 nike

我正在尝试使用来自另一个项目的 Http POST 请求调用 WCF 服务方法,它允许 GET 请求,但是当我尝试 POST 请求时它显示“方法不允许”

当我尝试时,它在我的控制台中显示了这个错误:

Access to XMLHttpRequest at 'http://localhost:7280/api/values/24' from origin 'http://localhost:6538' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

网络接口(interface):方法:

[WebInvoke(UriTemplate = "/values", Method = "POST", ResponseFormat = WebMessageFormat.Json), CorsEnabled]
void AddValue(string value);

方法实现

public void AddValue(string value)
{
string id = nextId.ToString();
nextId++;
allValues.Add(id, value);
string location = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.ToString() + "/" + id;
WebOperationContext.Current.OutgoingResponse.SetStatusAsCreated(new Uri(location));
}

客户端应用:

$("#post").click(function () {
var data = "\"" + $("#value").val() + "\"";
$.ajax({
url: valuesAddress,
type: "POST",
contentType: "application/json",
data: data,
success: function (result) {
$("#result").text(result);
},
error: function (jqXHR, textStatus, errorThrown) {
$("#result").text(textStatus);
}
});
});

我关注了 https://code.msdn.microsoft.com/Implementing-CORS-support-c1f9cd4b/view/SourceCode#content我将 Web API 和客户端应用程序创建为不同的项目。请帮助解决这个问题。

最佳答案

当您查看 documentation MSDN 时,您已启用 Cors 属性provides 你会看到你必须在类或方法之上提供属性。下面的代码允许跨域调用类中的所有方法。

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class Service1 : IService1
{
// Details omitted
}

下面的代码为 GetAllStudents 方法启用了 cors。

public class Service1 : IService1
{
[EnableCors(origins: "*", headers: "*", methods: "*")]
List<string> GetAllStudents()
{
// Details omitted
}
}

关于c# - CORS 实现显示 POST 请求不允许的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56326302/

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