首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cors跨域发布

Cors跨域发布
EN

Stack Overflow用户
提问于 2017-05-11 06:00:37
回答 1查看 88关注 0票数 2

我们有一个写得非常糟糕的遗留WebSite应用程序,我们正试图慢慢地将其转换为MVC。

作为其中的一部分,我们将创建一组MVC控制器,作为权宜之计,我们希望能够从遗留网站中调用这些控制器。

到目前为止,我有以下在网站aspx页面作为一个事件的点击按钮;

代码语言:javascript
复制
function CallControllerMethod() {
    $.ajax({
        type: 'GET',
        dataType: "text",
        url: "http://localhost:49443/Home/TestAjaxMethod",
        success: function (response) {
            alert(response);
        },
        error: function (e) {
            console.log(e);
        }
    });
}

这就调用了MVC项目中的控制器方法;

代码语言:javascript
复制
[EnableCors("*", "*", "*")]
public class HomeController : Controller
{
    [HttpGet]
    [EnableCors("*","*","*")]
    public int TestAjaxMethod()
    {
        return 10;
    }
}

在MVC应用程序中的WebApiConfig中,我有这样的功能;

代码语言:javascript
复制
    var cors = new EnableCorsAttribute("*", "*", "*");
    configuration.EnableCors(cors);

因此,当我从网站调用控制器方法时,我在mvc控制器中的断点就会被击中。但是,当我返回10的值时,在网站ajax调用中我会得到以下错误;

XMLHttpRequest无法加载http://localhost:49443/Home/TestAjaxMethod。请求的资源上没有“访问-控制-允许-原产地”标题。因此,“http://localhost:49252”源是不允许访问的。

令人困惑的是,Ajax调用使其成为控制器方法,但我似乎无法从中返回值。

更新

即使我从WebApiConfig和控制器中删除了对Cors的所有引用,也仍然可以使用MVC方法,并得到相同的错误。

EN

回答 1

Stack Overflow用户

发布于 2017-05-11 08:31:49

正如注释中所指出的,EnableCors属性仅适用于WebAPI控制器。如果要将CORS头添加到常规MVC方法中,可以手动进行。

例如,下面是我过去使用过的一些代码:

代码语言:javascript
复制
var origin = Request.Headers["Origin"];

if (origin != null)
{
    Response.AddHeader("Access-Control-Allow-Origin", origin);
}

或者,您可以创建自己的属性:

代码语言:javascript
复制
public class AddCorsHeader : ActionFilterAttribute
{
    public override void OnActionExecuted(HttpActionExecutedContext context)
    {
        IEnumerable<string> origin;
        if (context.Request.Headers.TryGetValues("Origin", out origin))
        {
            context.Response.Headers.Add("Access-Control-Allow-Origin", origin);
        }
    }
}

然后将[AddCorsHeader]添加到相关方法中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43907622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档