微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.Net MVC中跨域访问问题

客户端

$.ajax({
                    url: "http://localhost:53607/api/values",
                    type: "GET",
                    cache: false,
                    
                    success: function(data){
                        var ppFacets = internal.econbiz.preprocessFacets(data);
                        var ppResults = internal.econbiz.preprocessResults(data);
                        internal.onReceiveData(term, ppFacets, ppResults);
                    },
                    error:function(err){
                      console.log(err.statusText);
                      console.log('异常');
                    }
                });

服务端

public class ValuesController : ApiController
{
        // GET api/values
        public string Get()
        {
            string json;
            // ... 
            return json;
}

 

出现问题:

Access to XMLHttpRequest at 'http://localhost:53607/api/values' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

 

原因关键词: 跨域访问

 

解决方案一(从服务器出发):

1.创建一个类AllowCrossSiteJsonAttribute

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


public class AllowCrossSiteJsonAttribute : ActionFilterattribute
{
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        if (actionExecutedContext.Response != null)
            actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
        base.OnActionExecuted(actionExecutedContext);
    }
}

2.在Controller类前添加标记[AllowCrossSiteJson]

   [AllowCrossSiteJson]
    public class ValuesController : ApiController
    {
        // GET api/values
        public string Get()
        {

        }
    }

3.成功

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐