ServiceStack支持跨域提交

时间:2023-08-19 19:19:38

//ServiceStack对浏览器有一定的限制

//修改AppHost.cs文件

using Funq;
using ServiceStack;
using ServiceStackTest.ServiceInterface;

namespace ServiceStackTest
{
public class AppHost : AppHostBase
{
/// <summary>
/// Default constructor.
/// Base constructor requires a name and assembly to locate web service classes.
/// </summary>
public AppHost()
: base("ServiceStackTest", typeof(MyServices).Assembly)
{

}

/// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{
//Config examples
//this.Plugins.Add(new PostmanFeature());

//支持跨域 方式1
this.Plugins.Add(new CorsFeature());
//相当于使用了默认配置
//CorsFeature(allowedOrigins: "*",allowedMethods: "GET, POST, PUT, DELETE, OPTIONS",allowedHeaders: "Content-Type",allowCredentials: false);
//如果仅仅允许GET和POST的请求支持CORS,则只需要改为:
//Plugins.Add(new CorsFeature(allowedMethods: "GET, POST"));

//对应JsonP 跨域提交 方式2
//this.GlobalResponseFilters.Add((req, res, dto) =>
//{
// var func = req.QueryString.Get("callback");
// if (!func.IsNullOrEmpty())
// {
// res.AddHeader("Content-Type", "text/html");
// res.Write("<script type='text/javascript'>{0}({1});</script>".FormatWith(func, dto.ToJson()));
// res.Close();
// }
//});

//支持跨域 方式3
base.SetConfig(new HostConfig()
{
GlobalResponseHeaders =
{
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
{ "Access-Control-Allow-Headers", "Content-Type" },
},
});
}
}
}