背景

随着富客户端框架的盛行,以及众多优秀的前端js框架,很多情况我们会遇到跨域的问题,而js的ajax请求是不允许直接跨域访问的,当然你会说可以用JSONP等,但是由于代码洁癖,不想在前端和后台添加callback,而且很多情况你是无法控制的,需要牵连考虑太多的情况。

所以我直接绕过了,每个前端应用,自带一个通用后端服务代理,该服务解决跨域问题,自动代理帮前台获取跨域的数据。

如何算跨域

虽然是个老问题,但是还是要提醒注意下两点:同IP,不同端口,数据访问是跨域的,但是Cookie访问是可以的(这个让我很难理解)

解决,源码
     CookieContainer cookieContainer = new CookieContainer();[HttpPost]public string CommonPost(string url){log.Info(CookieHelper.GetCookie("ITDC_UserName") + "进入方法CommonPost Url=" + url);Uri address = new Uri(System.Configuration.ConfigurationManager.AppSettings["RESTfulAPI"].ToString() + url);HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";//远程服务,需要加入cookie验证cookieContainer.Add(address, GetCookie("ITDC_UserName"));cookieContainer.Add(address, GetCookie("ITDC_UserRole"));request.CookieContainer = cookieContainer;StringBuilder data = new StringBuilder();for (int i = 0; i < Request.QueryString.Count; i++){if (Request.QueryString.Keys[i].ToString() == "url") continue;data.Append("&" + Request.QueryString.Keys[i].ToString() + "=" + Request.QueryString[i].ToString());}// Create a byte array of the data we want to sendbyte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString().TrimStart('&'));// Set the content length in the request headersrequest.ContentLength = byteData.Length;// Write data  using (Stream postStream = request.GetRequestStream()){postStream.Write(byteData, 0, byteData.Length);}  string result = "";using (HttpWebResponse response = request.GetResponse() as HttpWebResponse){StreamReader reader = new StreamReader(response.GetResponseStream());result = reader.ReadToEnd();}log.Info(CookieHelper.GetCookie("ITDC_UserName") + " 执行完成 CommonPost Url=" + url);return (result);}

前台调用

Ext.Ajax.request({url: APIUrl + '/Nebula/CommonPost?url=/Nebula/PostComment/&KlId=1&Msg=ok&Author=admin&Title=文章标题',method: "POST",success: function (response) {Ext.Viewport.unmask();var obj = Ext.decode(response.responseText);Ext.Msg.alert("提示", obj.Msg, Ext.emptyFn);},failure: function (response) {Ext.Viewport.unmask();Ext.Msg.alert("提示", "操作失败,请检查网络!", Ext.emptyFn);}
});

C#后台调用跨域MVC服务,带Cookie验证相关推荐

  1. axios库读不到cookie_Vue axios 跨域请求无法带上cookie的解决

    Vue axios 跨域请求无法带上cookie的解决 在main.js设置 // 携带cookie axios.defaults.withCredentials = true 补充知识:VUE ax ...

  2. ajax提交不能进入后台_Ajax跨域问题

    今天写表单提交时候遇到个问题, 每次提交都提示是跨域的问题,捣鼓了半天,发现少了个属性 后台的跨域设置: 前台form表单提交: 解决方式: 在表单提交时候加2个属性 访问正常 解决跨域请求问题,首先 ...

  3. java 服务端 处理跨域_javaweb服务端跨域支持

    项目开发为了支持web浏览器ajax的直接请求,涉及到了跨域的需求,通过学习对跨域有了更深入的认识,现在总结一下: 1.跨域说明 跨域指请求和服务的域不一致,浏览器和H5的ajax请求有影响,而对服务 ...

  4. Java后台解决跨域问题

    Java后台解决跨域问题 参考文章: (1)Java后台解决跨域问题 (2)https://www.cnblogs.com/qinyuanyuan/p/11380379.html 备忘一下.

  5. axios跨域携带cookie_axios 跨域处理以及带 cookies 的请求

    背景 在开发 vue 的项目时,使用 axios 来与后端交互,经常会遇到几个问题 请求跨域 请求中带 cookies 请求跨域解决方案 解决请求跨域有以下两种方案 同源访问 后端允许跨域请求 这里主 ...

  6. 面试官问:跨域请求如何携带cookie?

    大家好,我是若‍川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列 ...

  7. 前台关于跨域的警告A cookie associated with a cross-site resource at .........,代理服务器

    前台关于跨域的警告A cookie associated with a cross-site resource at -,代理服务器 A cookie associated with a cross- ...

  8. 谷歌浏览器升级到91出现跨域问题,导致cookie保存的sessionId不一样

    先来说一下问题: 谷歌浏览器升级到91之后出现一个跨域问题,导致cookie保存的接口sessionId不一致,从而后台出现session不一致问题.如下图: 这是第一个接口: 这是第二个接口 这本应 ...

  9. ajax请求时cookie,ajax跨域请求中的cookie问题

    update 另一个问题 ajax在进行复杂请求如PUT,POST,DELETE等时,当请求为cross domain request是,会先发一个OPTIONS请求确认服务器的跨域支持情况,在发送原 ...

  10. Ajax跨域请求时携带cookie

    在使用Ajax技术发送跨域请求时,默认情况下是不会在请求中携带cookie信息的. 如果需要在跨域请求中携带cookie,则需要对客户端和服务器都进行设置. 客户端代码: xhr.withCreden ...

最新文章

  1. xx.xib: error: Illegal Configuration: Safe Area Layout Guide before iOS 9.0报错问题解决
  2. Winform中给DataGridView添加多选框列并获取选中行的内容
  3. Linux环境下Redmine的安装(一)
  4. 比特币的区块结构解析
  5. c# 拼接Json串的几种方法
  6. 蓝桥杯 2011年第二届C语言初赛试题(5)
  7. raspberry pi_如何购买Raspberry Pi
  8. ios view 切上部分圆角_IOS开发入门之给view添加圆角并指定位置
  9. (笔记) SpringCloud之Hystrix断路器 属性详解
  10. Error launching Console Application PDFLaTeX
  11. 三分钟带你了解PPT图标
  12. matlab gui串口通信,Matlab GUI上位机界面实现串口通信
  13. coalesce函数详解--判空三目表达式
  14. 求三点共圆求圆心半径及其推导(三角形外心)
  15. 用友T+、U8、NC系列,致远OA产品二次开发
  16. Tensorflow使用LSTM实现中文文本分类(1)
  17. OA系统中如何实现合同管理?
  18. 常见网络设备/应用的默认密码的几种收集方式
  19. Boom 3D播放器功能详解
  20. jQuery 插件—— 懒加载

热门文章

  1. android 布局覆盖 超出一部分_Android 开发者峰会 2019 常见问题解答
  2. Java编写网络爬虫
  3. TF-IDF来源及理论推导 熵推导出
  4. TCMalloc原理
  5. 计算机组成原理完整学习笔记(五):计算方法
  6. 牛客 动物森友会(最大流+二分)
  7. python 幅度和相位求复数_皮质运动兴奋性不受中央区mu节律相位的调节
  8. poj3274 找平衡数列(哈希加一点数学思维)
  9. mysql concat函数进行模糊查询
  10. FutureTask 源码解析