jqueryrestfulput请求
我试图调用ServiceStack中开发的restful服务。我成功地调用了Get(s),但我很难调用Put或Post。 我的脚本来自客户端 我的测试是在fiddler上完成的,以确保服务器端的API正常工作 我的服务代码: 和配置代码: Add(newcorsfeature())jqueryrestfulput请求,jquery,rest,servicestack,Jquery,Rest,servicestack,我试图调用ServiceStack中开发的restful服务。我成功地调用了Get(s),但我很难调用Put或Post。 我的脚本来自客户端 我的测试是在fiddler上完成的,以确保服务器端的API正常工作 我的服务代码: 和配置代码: Add(newcorsfeature()) 从.ajax()方法和“type”参数的jQuery文档页面: 键入(默认值:“获取”) 类型:字符串 请求的类型(“POST”或“GET”),默认为“GET”。注意:此处也可以使用其他HTTP请求方法,如
从.ajax()方法和“type”参数的jQuery文档页面: 键入(默认值:“获取”)
类型:字符串
请求的类型(“POST”或“GET”),默认为“GET”。注意:此处也可以使用其他HTTP请求方法,如PUT和DELETE,但并非所有浏览器都支持它们
从.ajax()方法的jQuery文档页面和“type”参数: 键入(默认值:“获取”)
类型:字符串
请求的类型(“POST”或“GET”),默认为“GET”。注意:此处也可以使用其他HTTP请求方法,如PUT和DELETE,但并非所有浏览器都支持它们
我已将类型设置为“PUT”,我还将其设置为覆盖标题。如果在浏览器中运行此操作,浏览器是否支持它?如果您使用网络检查器(例如在Firefox的Firebug或Chrome开发工具中),它是否显示发送的PUT请求?另外,请求是否正确设置了“Accept:application/json”头,以确保响应是json格式的?如果没有,您可能需要在请求中添加一个额外的查询字符串参数“format=json”。我已经使用了所有设置,我可以通过Fiddler调用客户端,但不能通过浏览器。问题可能在于我在servicestcak中配置COR的方式。是否阅读了有关stack的所有相关主题,并尝试了所有建议,但到目前为止运气不佳,需要更多地阅读servicestack和CORS。啊,我看到可能跨域请求被阻止了?好的,我卡住了。我尝试了servicestack端的所有建议,以确保API允许跨域请求,而不会带来任何运气。我想提到的是,我正在通过VisualStudioDesigner运行Rest服务和Web应用程序,这意味着它使用IIS express。不确定这是否有区别?我已将类型设置为“PUT”,我还将其设置为覆盖标题。如果在浏览器中运行此操作,浏览器是否支持它?如果您使用网络检查器(例如在Firefox的Firebug或Chrome开发工具中),它是否显示发送的PUT请求?另外,请求是否正确设置了“Accept:application/json”头,以确保响应是json格式的?如果没有,您可能需要在请求中添加一个额外的查询字符串参数“format=json”。我已经使用了所有设置,我可以通过Fiddler调用客户端,但不能通过浏览器。问题可能在于我在servicestcak中配置COR的方式。是否阅读了有关stack的所有相关主题,并尝试了所有建议,但到目前为止运气不佳,需要更多地阅读servicestack和CORS。啊,我看到可能跨域请求被阻止了?好的,我卡住了。我尝试了servicestack端的所有建议,以确保API允许跨域请求,而不会带来任何运气。我想提到的是,我正在通过VisualStudioDesigner运行Rest服务和Web应用程序,这意味着它使用IIS express。不确定这是否有区别?
function savePartner(e) {
$.ajax({
type: "PUT",
contentType: "application/json; charset=utf-8",
headers: {
'X-HTTP-Method-Override': 'PUT'
},
url: "http://localhost:49190/test",
data: partnerInfoToJSON(),
complete: function (data) { alert("complete"); },
success: function (data) { alert("done"); },
error: function (data) { alert("failed");},
dataType: "json"
});
}
function partnerInfoToJSON() {
return JSON.stringify({
"Name": "TEST"
});
};
[Route("/test/", "Put")]
public class TestDTO
{
public string Name { get; set; }
}
public class TestDTOResponse
{
public long ID { get; set; }
public ServiceStack.ServiceInterface.ServiceModel.ResponseStatus ResponseStatus { get; set; }
}
[EnableCors(allowedMethods: "GET,POST,PUT,DELETE")]
public class TestService : ServiceStack.ServiceInterface.Service
{
[EnableCors(allowedMethods: "GET,POST,PUT,DELETE")]
public void Options(TestDTO testDTO)
{
}
public object Put(TestDTO testDTO)
{
try
{
return "Hallo World";
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
RequestFilters.Add((httpReq, httpRes, requestDto) =>
{
if (httpReq.HttpMethod == "OPTIONS")
httpRes.End();
});
base.SetConfig(new EndpointHostConfig
{
DebugMode = true,
DefaultContentType = "application/json",
GlobalResponseHeaders = {
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
{ "Access-Control-Allow-Headers", "Content-Type, origin, accept" },
}
});