最近在做一个前后端分离的示例,以下代码完美解决跨域的问题
一、后端服务
1.首先我们建一个.net core webapi的项目
2.项目引用Microsoft.AspNetCore.Cors 包
3.添加cors 服务
public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            //添加cors 服务
            services.AddCors(options =>//p.WithOrigins这里就是配置策略,允许访问的地址
        options.AddPolicy("Admin", p => p.WithOrigins("http://localhost:5000", "http://localhost:9528").AllowAnyMethod().AllowAnyHeader().AllowCredentials()) ); }
4.配置Cors
  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }
            //配置Cors
            app.UseCors("Admin");
            app.UseHttpsRedirection();
            app.UseMvc();
        }
5.编写控制器
 [Route("api/[controller]")]
    [ApiController]
    public class GetDataController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        [EnableCors("Admin")]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { DateTime.Now.ToString() };
        }
        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }
        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }
        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }
        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
二、前段
1.创建Vue前段项目,我这里是使用的是vue+element (自己百度创建)
2.安装axios模块 npm install axios -g
3.调用api
export default {
  data() {
    return {
      msg:''
    }
  },
  methods: {
    onSubmit() {
      let _self=this;
      console.log(this.form)
      axios.get('http://localhost:5000/api/GetData')
        .then(function (response) {
          console.log(response);
          _self.msg=response.data;
        })
        .catch(function (error) {
          console.log(error);
        });
    }
  }
}
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号