2

全部,

我们正在尝试在工作中使用 ServiceStack 作为我们所有内部和前向站点的后端 API,但我们遇到了问题。以下是问题...

网站

 - site1.xyz.com
 - site2.xyx.com
 - etc.xyx.com

API
 - api.xyx.com

1)我们需要一个自定义请求头来处理身份验证。我们的应用程序将应用程序 ID 发送到 API 服务器以对应用程序进行身份验证,因此 JSONP 不可用。

2)既然JSONP出来了,我们需要支持OPTIONS。我有这个在 Chrome 和 IE 上工作,但是 IE 正在抛出那个该死的安全弹出窗口。我们可以与我们的内部用户一起解决这个问题,但不能与我们的外部用户一起解决。

如果有人对如何实现这一点有任何建议,我很想听听他们的意见。我希望 CORS 规范处理子域。如果是这样,这将起作用并且很简单......

4

1 回答 1

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 和 CORS

Web 浏览器应该发出 OPTIONS 请求,并在那里处理。然后在之后进行 GET、POST 等。

此示例允许所有域 (*),但您可以添加自己的逻辑以适应。

仅供参考-我认为 IE 直到 IE 10 才具有完整的 CORS 支持。

于 2013-06-21T20:10:07.507 回答