1. 这里说的跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
    默认浏览器是不支持直接跨域访问的。但是由于种种原因我们又不得不进行跨域访问,比如当前后端分离的方式开发程序是跨域是不可避免的。
    而解决跨域的方式也比较简单:
    1通过jsonp跨域
    2通过修改document.domain来跨子域
    3、添加对服务端进行改造使其支持跨域。
    接下来说说怎么实现asp.net core webapi的跨域(Cors)访问。
    首先你得有个webapi的项目,并添加Microsoft.AspNetCore.Cors的包,然后在Startup中的ConfigureServices下配置新增如下代码:
  1. #region 跨域
  2. var urls = Configuration["AppConfig:Cores"].Split(',');
  3. services.AddCors(options =>
  4. options.AddPolicy("AllowSameDomain",
  5. builder => builder.WithOrigins(urls).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials())
  6. );
  7. #endregion

这样asp.net core webapi就支持了跨域且支持cookie在跨域访问时发送到服务端(不要问我为什么,仔细看看跨域所添加的头就明白了)。

配置完跨域还需要写明哪些控制器或方法可以跨域,之前看某大神的帖子说须在Startup的Configure中配置如下代码:

app.UseCors("AllowSameDomain");

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Elisoft.PMForWechat.Web.App_Helper.Auth;
  6. using Microsoft.AspNetCore.Cors;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.AspNetCore.Mvc.Filters;
  9.  
  10. // For more information on enabling Web API for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
  11.  
  12. namespace Elisoft.PMForWechat.Web.App_Helper
  13. {
  14. //启用跨域
  15. [EnableCors("AllowSameDomain")]
  16. public class BaseController : Controller
  17. {
  18. public AuthManager _authManager { get { return new AuthManager(HttpContext); } }
  19. }
  20. }

然后每个控制器集成上面定义的基础控制器。

这样整个asp.net core webapi之跨域(Cors)访问 就配置完了。

最后贴一下在jquery的访问代码:

  1. $.ajax({
  2. type: 'post',
  3. url: interfac_url_content.Account_Login,
  4. data: JSON.stringify(json),
  5. contentType: 'application/json',
  6. beforeSend: function () {
  7. Loading("请稍等,数据提交中... ...");
  8. },
  9. //必须有这项的配置,不然cookie无法发送至服务端
  10. xhrFields: {
  11. withCredentials: true
  12. },
  13. success: function (json) {
  14. $.unblockUI();
  15. if (handleajaxresult(json)) {
  16. data=json.data;
  17. setCookie("Account",data.Account);
  18. window.location.href = "index.html#/pages/staff/index.html";
  19. }
  20. }
  21. });
  1. 参考文章:http://www.cnblogs.com/xishuai/p/aspnet-core-cors.html
  1.  

asp.net core webapi之跨域(Cors)访问的更多相关文章

  1. ASP.NET Core Web API 跨域(CORS) Cookie问题

    身为一个Web API,处理来自跨域不同源的请求,是一件十分合理的事情. 先上已有的文章,快速复制粘贴,启用CORS: Microsoft:启用 ASP.NET Core 中的跨域请求 (CORS) ...

  2. asp.net core webapi Session 跨域

    在ajax 请求是也要加相应的东西 $.ajax({ url:url, //加上这句话 xhrFields: { withCredentials: true } success:function(re ...

  3. asp.net core webapi 配置跨域处理

    在Startup.cs文件中的ConfigureServices方法中加入如下代码: //配置跨域处理 services.AddCors(options => { options.AddPoli ...

  4. 第十四节:Asp.Net Core 中的跨域解决方案(Cors、jsonp改造、chrome配置)

    一. 整体说明 1. 说在前面的话 早在前面的章节中,就详细介绍了.Net FrameWork版本下MVC和WebApi的跨域解决方案,详见:https://www.cnblogs.com/yaope ...

  5. ASP.NET Core-Docs:在 ASP.NET Core 中启用跨域请求(CORS)

    ylbtech-ASP.NET Core-Docs:在 ASP.NET Core 中启用跨域请求(CORS) 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. ...

  6. .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片

    .NET压缩图片保存   需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...

  7. IIS Manager 配置文件修该,允许跨域CORS访问

    IIS Manager 配置文件修该,允许跨域CORS访问 IIS Manager 的api访问会出现跨域问题,需要 IIS Manager的配置文件中修改. 配置文件的路径:C:\Program F ...

  8. 在 ASP.NET Core 中启用跨域请求(CORS)

    本文介绍如何在 ASP.NET Core 的应用程序中启用 CORS. 浏览器安全可以防止网页向其他域发送请求,而不是为网页提供服务. 此限制称为相同源策略. 同一源策略可防止恶意站点读取另一个站点中 ...

  9. .net core webapi+vue 跨域访问

    最近在做一个前后端分离的示例,以下代码完美解决跨域的问题 一.后端服务 1.首先我们建一个.net core webapi的项目 2.项目引用Microsoft.AspNetCore.Cors 包 3 ...

随机推荐

  1. 面试题<初级>

    INTERVIEW .markdown-body ul pre code { background:red; font-size:40px; } @code-char:"```" ...

  2. 【C#】Excel做的数据表、SQLParameter代码生成工具

    转载请注明出处http://www.cnblogs.com/Vulpers/ 做了一个小的代码生成工具,用于新建数据表时能够快速生成一些重复性很高的代码,目前仅支持SqlServer数据库及C#语言, ...

  3. Maven中配置默认JDK版本

    使用Maven构建项目时,默认是使用jdk1.3版本,目前很多使用泛型的项目肯定是无法通过编译,除了修改项目的pom文件外,还可以在Maven的配置文件settings.xml中添加如下配置来解决: ...

  4. html5实现摇一摇功能

    原理:使用DeviceMotion实现,关于DeviceMotion介绍可以查看 https://developer.mozilla.org/en-US/docs/Web/Reference/Even ...

  5. 对button或radiobutton制作样式

    制作样式在drawable中进行 (cheakbox)在样式中点击变换图片,<selector> <item android:state_checked="true&quo ...

  6. JavaScript拼接字符串传递多个参数

    var ftOpreat = function (value,rows){ var v = rows.Version; var preview = "<a href=\"#\ ...

  7. Unity4升级Unity5后Image Effects问题

    Assets\Editor\Image Effects\CameraMotionBlurEditor.js 会出现Ambiguous reference 'preview'错误提示,解决方法 查找pr ...

  8. css3 2D动画的基本用法和介绍

    <style> body{height:400px;border:1px solid #000;} .box{width:90px;height:30px;border:1px solid ...

  9. 将 project.json 项目转换为 Visual Studio 2015 解决方案

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  10. cocos2d 3.X Shader 变暗和变灰

    转自http://www.waitingfy.com/archives/1741 1.为了节约一张图引发的Shader使用  我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示 ...