繁体   English   中英

Asp.net WebAPI启用Cors到特定的SSL / https来源

[英]Asp.net WebAPI enable Cors to specific SSL/https origin

以下是我的Web api项目的一部分。

public class TriviaController : ApiController
{        
    public HttpResponseMessage Get()
    {
        QuestionAnswer _QuestionAnswer = new QuestionAnswer();
        TriviaQuestion _TriviaQuestion = _QuestionAnswer.GetQuestion("test@yahoo.com");
        return Request.CreateResponse(HttpStatusCode.OK, _TriviaQuestion);
    }    
}

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        EnableCrossSiteRequests(config);
        AddRoutes(config);
    }

    private static void AddRoutes(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "Default",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

    private static void EnableCrossSiteRequests(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute(
            origins: "*",
            headers: "*",
            methods: "*");
        config.EnableCors(cors);
    }
}

我的客户端应用程序接收由contoller返回的json数据。 一切正常,直到我修改为如下所示的特定来源。

var cors = new EnableCorsAttribute(
            origins: "https://jsfiddle.net/", //"https://localhost:44304/",
            headers: "*",
            methods: "*");

之后,我的客户端应用程序仅收到空值和错误消息,指出状态码0。
根据此参考链接 ,我知道这是因为CORS。

以下是我的客户代码。 很简单。

alert("*");
$.getJSON("https://localhost:44300/api/trivia", function(data) {
  alert(JSON.stringify(data));
})
.done(function() { alert('getJSON request succeeded!'); })
.fail(function(jqXHR, textStatus, errorThrown) { 
alert('getJSON request failed! ' + textStatus + ' :: ' + jqXHR + ' :: ' + errorThrown); 

$.each(jqXHR, function(k, v) {
    //display the key and value pair
    alert(k + ' is ' + v);
});

})
.always(function() { alert('getJSON request ended!'); });

要在jsFiddle上查看,请单击此处

所以我的问题是
是否可以使用SSL设置允许来源? 如果是这样,我在做什么错?

尝试分别添加原点。 在浏览器中使用开发人员工具,以确保原点与您希望的原点完全匹配。

var cors = new EnableCorsAttribute("https://localhost:portno", "*", "*"); // local
cors.Origins.Add("https://jsfiddle.net");  // jsfiddle

config.EnableCors(cors);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM