所有
我们正在努力将ServiceStack用作所有内部和前向站点的后端API,但我们遇到了问题。以下是问题......
网站
- site1.xyz.com
- site2.xyx.com
- etc.xyx.com
API
- api.xyx.com
1)我们需要一个自定义请求标头来处理身份验证。我们的应用程序向API服务器发送应用程序ID以验证应用程序,因此JSONP已经用完。
2)由于JSONP已经出局,我们需要支持OPTIONS。我有这个在Chrome和IE上工作,但IE正在抛出该死的安全弹出窗口。我们可以通过内部用户解决这个问题,但不能与外部用户解决。
如果有人对如何做到这一点有任何建议,我很乐意听到他们的意见。我希望CORS规范处理子域名。如果确实如此,这将是有效的,并且生病简单...
答案 0 :(得分:2)
我是使用CORS的新手,但我确实使用了OPTIONS。
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" },
}
};
}
}
我的参考是:servicestack REST API and CORS
Web浏览器应该在那里处理OPTIONS请求。然后进行GET,POST等操作。
此示例允许所有域(*),但您可以添加自己的逻辑以适应。
仅供参考 - 我认为IE在IE 10之前不具备完整的CORS支持。