【问题标题】:Cross Origin in ajax call using ASP.NET MVC使用 ASP.NET MVC 在 ajax 调用中跨域
【发布时间】:2016-08-01 07:02:32
【问题描述】:

我正在使用具有 MVC 框架 4.5 的 Visual Studio 2013 版。

我正在使用 ajax 调用 ActionResult,例如:

$.ajax({
                type: "POST",
                url: $("#hdnSiteUrl").val() + 'Home/UserLogin',
                data: JSON.stringify(dataJson),
                contentType: "application/json; charset=utf-8",
                datatype: "jsonp",
                async: false,
                success: function (msg) {
                    if (msg == 'false') {
                        $("#loginerror").show();
                        $("#loginerror").text("UserName or Password is wrong.");
                    }
                    else {
                        //window.location.href = ($("#hdnSiteUrl").val());
                        window.location.reload();
                    }
                },
                error: function (msg) {
                }
            });

我现在面临的问题是在某些计算机上跨源,但在某些计算机上运行正常。

我该如何解决这个问题?

请已经解决的人帮我解决这个问题!

我也尝试使用数据类型发送数据:jsonp 在某些计算机上它正在运行,但在某些计算机上仍然有问题。

【问题讨论】:

    标签: json ajax asp.net-mvc cross-domain jsonp


    【解决方案1】:

    JSONP 代表“带有填充的 JSON”,它是一种从不同域加载数据的解决方法。它将脚本加载到 DOM 的头部,因此您可以像在自己的域中加载一样访问信息,从而绕过跨域问题。

    你正在使用自己的 mvc 项目 url url: $("#hdnSiteUrl").val() + 'Home/UserLogin',

    尝试将 dataType:'jsonp' 更改为

    dataType: 'json',
    

    为了更清楚:

    (function($) {
    var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?';
    
    $.ajax({
    type: 'GET',
    url: url,
    async: false,
    jsonpCallback: 'jsonCallback',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
       console.dir(json.sites);
    },
    error: function(e) {
       console.log(e.message);
    }
    });
    
    })(jQuery);
    

    您还可以允许跨域以允许从不同域调用数据,以便您的 web.config 文件中需要以下代码

    <system.webServer>
    <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="http://localhost" />
      <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" />
      <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
      <add name="Access-Control-Max-Age" value="1000" />
    </customHeaders>
    

    【讨论】:

    • 我已经提到我使用过 jsonp 但仍然面临同样的问题。并且您要更改的配置文件正在创建 400 类型的错误,所以我现在该怎么办!提前致谢。
    • 好的尝试使用“crossOrigin:true”检查这个Url-link
    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多