MVC与WEBAPI跨域问题

跨域问题:

前端实现 JsonP() { }  

后端实现 1.Response.  coding中写下面这句话

HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");

Response.Header("")配置

HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");

  1. Action中写代码   onActionExceting(){ }中写

actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin","*");

  1. 在Nuget中找第三方插件 Cors

 

System.Web.Http.Cors配置跨域访问的两种方式

  使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心得。在webapi中使用System.Web.Http.Cors配置跨域信息可以有两种方式。 
  一种是在App_Start. WebApiConfig.cs的Register中配置如下代码,这种方式将在所有的webapi Controller里面起作用。

using System;using System.Collections.Generic;using System.Linq;using System.Web.Http;

using System.Web.Http.Cors;

 

namespace YDTG.Service

{

    public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {

            // Web API 配置和服务

 

            // Web API 路由

            config.MapHttpAttributeRoutes();

 

            config.Routes.MapHttpRoute(

                name: "DefaultApi",

                routeTemplate: "api/{controller}/{action}/{id}",

                defaults: new { id = RouteParameter.Optional }

            );

            //这是重点,从配置文件的appsettings节点中读取跨域的地址

            var cors = new EnableCorsAttribute(ConfigurationManager.AppSettings["origins"], "*", "*");

            config.EnableCors(cors);

        }

    }

}

 

配置文件如下,注意一定要加上http

<add key="origins" value="http://localhost:9012,http://192.168.1.108:9012" />

第二种方式就是在每个webapiController类中设置,即每个控制器个性化配置,如下代码。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http.Cors;using System.Web.Mvc;

namespace Service.Controllers

{

    [EnableCors("http://localhost:9012,http://192.168.1.108:9012", "*", "*")]

    public class HomeController : Controller

    {

        public ActionResult Index()

        {

            ViewBag.Title = "Home Page";

            return View();

        }

    }

}

 

注意事项

  1. EnableCors共三个参数分别为origins、headers和methods。origins配置允许访问的域名,多个域名以逗号分隔即可,域名一定要完整,如果是ip地址前面要加上“http”,只使用IP的话一定会失效的。参数headers配置所支持的资源。参数methods配置支持的方法,get、post、put等。如果允许任意域名、任意资源、任意方法访问自己的webapi,则三个参数全部使用星号”*”即可。
  2. “EnableCors(“http://localhost:9012,http://192.168.1.108:9012“, ““, ““)”中的配置如果出现错误的话不会报错,而是直接禁止未出现在配置表中的资源访问。
  3. 如果使用第一种方式那么可以从配置文件中读取网站列表,如果使用第二种方式,所有的参数只能使用常量
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值