ASP.NET中MVC跨域CORS访问的设置

在ASP.NET中需要在多个网站间进行跨域访问,一般使用代码或者配置应该都可以实现。

如有在A站需选择A站或者通过B站进行登录,如果使用B站登录后将转向A站。

  先介绍使用配置的方式。

  由于需要B站接收A站的请求,因此需要在B站的response的Header中添加带有Access-Control-Allow-前缀的属性。

简单点的方法是可以在Web.config中,增加如下配置。

在B站的system.webServer节点中加入

  <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="http://domainA" />
        <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,Authorization" />
        <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
        <add name="Access-Control-Max-Age" value="1000" />
        <add name="Access-Control-Allow-Credentials" value="true" />
      </customHeaders>
    </httpProtocol>
注意:红色的部分表示,在跨域请求时允许带有cookie的内容,以便保存认证需要的信息。

关于A站的访问代码如下:

A站的登录页面Js代码

function submit(acc, psw, sys) {
    switch (parseInt(sys)) {
        case 1:
            //A站登录逻辑 。。。
            break;
        case 2:
       //B站             $.ajax({                 url: "http://localhost:63864/Account/Logon",                 type: "post",                 xhrFields: {                     withCredentials: true                 },                 crossDomain: true,                 dataType: "json",                 data: { userName: acc, password: psw, authkey: null, dep: null, keepSignedIn: false },                 success: function (data) {                     if (!data.IsSuccess) {                         $(".login-msg").text(data.ErrorMsg);                     }                     else {                         window.location = 'http://localhost:63864/Home/Index';                     }                 }             });                         break;     }
注意:红色的部分表示,在跨域请求时允许带有cookie的内容,以便保存认证需要的信息。

关于使用代码的方式,主要是将web.config中的内容放置在代码中,具体下次讨论。
参考地址:
https://stackoverflow.com/questions/6290053/setting-access-control-allow-origin-in-asp-net-mvc-simplest-possible-method
https://stackoverflow.com/questions/24687313/what-exactly-does-the-access-control-allow-credentials-header-do
https://stackoverflow.com/questions/36864674/access-control-allow-credentials-missing

posted @ 2017-07-03 15:40  毛毛雨小小鱼  阅读(612)  评论(0)    收藏  举报