servicestack 用于内部Web应用程序的CORS和ServiceStack后端
全部, 我们正在尝试使用ServiceStack作为我们所有内部和前向站点的后端API,但我们遇到了问题。以下是问题 地点 1) 我们需要一个自定义请求头来处理身份验证。我们的应用程序向API服务器发送一个应用程序ID来验证该应用程序,因此JSONP已退出 2) 由于JSONP已经过时,我们需要支持选项。我在Chrome和IE上做了这个,但IE正在抛出那个该死的安全弹出窗口。我们可以通过内部用户解决这个问题,但不能通过外部用户解决servicestack 用于内部Web应用程序的CORS和ServiceStack后端,servicestack,cors,servicestack,Cors,全部, 我们正在尝试使用ServiceStack作为我们所有内部和前向站点的后端API,但我们遇到了问题。以下是问题 地点 1) 我们需要一个自定义请求头来处理身份验证。我们的应用程序向API服务器发送一个应用程序ID来验证该应用程序,因此JSONP已退出 2) 由于JSONP已经过时,我们需要支持选项。我在Chrome和IE上做了这个,但IE正在抛出那个该死的安全弹出窗口。我们可以通过内部用户解决这个问题,但不能通过外部用户解决 如果有人对如何做到这一点有任何建议,我很乐意听取他们的意见。我希
如果有人对如何做到这一点有任何建议,我很乐意听取他们的意见。我希望地狱的CORS规范处理子域。如果它真的这样做了,这将很简单……我对使用CORS还不熟悉,但我确实使用了选项
public class YourService : Service
{
...
/// <summary>
/// CORS support
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public object Options(YourRequestDto request)
{
// return HTTP Code and Location: header for the new resource
// 204 No Content; The request was processed successfully, but no response body is needed.
return new HttpResult()
{
StatusCode = HttpStatusCode.NoContent,
Headers = {
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, OPTIONS" } ,
{ "Access-Control-Allow-Headers", "Content-Type" },
}
};
}
}
公共类服务:服务
{
...
///
///CORS支持
///
///
///
公共对象选项(您的请求到请求)
{
//返回新资源的HTTP代码和位置:标头
//204无内容;请求已成功处理,但不需要响应正文。
返回新的HttpResult()
{
StatusCode=HttpStatusCode.NoContent,
标题={
{“访问控制允许来源”,“*”},
{“访问控制允许方法”、“获取、选项”},
{“访问控制允许标头”,“内容类型”},
}
};
}
}
我的推荐信是:
web浏览器应发出选项请求,并在此处进行处理。然后在完成任务后进行GET、POST等
本例允许所有域(*),但您可以添加自己的逻辑以适应
仅供参考-在IE 10之前,我认为IE没有完全的CORS支持
public class YourService : Service
{
...
/// <summary>
/// CORS support
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public object Options(YourRequestDto request)
{
// return HTTP Code and Location: header for the new resource
// 204 No Content; The request was processed successfully, but no response body is needed.
return new HttpResult()
{
StatusCode = HttpStatusCode.NoContent,
Headers = {
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, OPTIONS" } ,
{ "Access-Control-Allow-Headers", "Content-Type" },
}
};
}
}