ionic ajax 跨域,解决 ionic 中的 CORS(跨域) 问题
缘起ionic社区里的(ionic serve)时的跨域问题,有人在这里翻译了一篇文章,洋洋洒洒,从理论到实际,说的都很好。html
不过有人在底下的评论里说的更加到位:web
搜索了一下,果真啊,方便啊跨域
不过仍是要说一下在服务器上的配置,如此可以作到使ionic看成纯web来使用。安全
废话很少,上代码。服务器
先上一个attribute,每次响应都带上这个header,容许其访问:app
public class AccessControlAllowOriginAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
public const string ALLOW_ORIGIN = "http://test.test.com";
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
System.Web.HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", ALLOW_ORIGIN);
}
}
在被容许调用的action或者controller上赋值此attribute:
[AccessControlAllowOrigin]
public class ValuesController : ApiController
{
}
完成。
考虑到正常来讲也就一个被容许访问的站点,所以使用了一个string的const,固然多了也能够考虑变成string[]。ionic
还能够使用动态的配置来加载这个string或者string[]。均可以。ide
public class AccessControlAllowOriginAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
public static string[] ARRAY_ALLOW_ORIGIN = new string[] { "http://int-env.test.com", "http://prod-env.test.com" };
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
try
{
string origin = System.Web.HttpContext.Current.Request.Headers["Origin"];
if (string.IsNullOrWhiteSpace(origin))
{
return;
}
origin = origin.ToLower();
if (ARRAY_ALLOW_ORIGIN.Contains(origin))
{
System.Web.HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", origin);
}
}
catch (Exception ex)
{}
}
}
固然了,因为Origin能够伪造,在任意容许了跨域访问的server上,不管是个别网站来源仍是*的来源,都不是安全的,只是形成其风险的步骤稍微多了一点而已。
其安全性上仍是要更多考虑一些。post
附请求双方的一些关键字:网站
/token
post
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=uname&password=pwd
resp:
{
"access_token": "ttttttttttttttttttt",
"token_type": "bearer",
"expires_in": 1209599,
"userName": "uanme",
".issued": "Fri, 01 Jul 2016 05:38:12 GMT",
".expires": "Fri, 15 Jul 2016 05:38:12 GMT"
}后续的token header:
Authorization : bearer token
ionic ajax 跨域,解决 ionic 中的 CORS(跨域) 问题相关推荐
- Django中的跨域解决办法 基于后端的跨域解决方案
Django中的跨域解决办法 基于后端的跨域解决方案 1 何为跨域 在浏览器中,只要发送请求的URL的协议.域名.端口号这三者中的任意一个与当前页面地址的协议.域名.端口号不同,则称之为跨域.当发生这 ...
- cors跨域_Spring Boot 中通过 CORS 解决跨域问题
(给ImportNew加星标,提高Java技能) 转自:江南一点雨 今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的, ...
- vue php跨域,Vue 项目中遇到的跨域问题及解决方法(后台php)
问题描述 前端 vue 框架,后台 php,百度跨域问题后台加这段代码 header("Access-Control-Allow-Origin: *"); 加了之后报这个错: Th ...
- 跨域解决方式——JSONP,CORS
文章目录 1.同源策略于跨域 1.1 同源策略 1.2 跨域 1.3 为什么要设定跨域这个概念 2.解决跨域的方案 2.1 jsonp 2.2 CORS 2.3 CORS和jsonp的比较 1.同源策 ...
- 跨域问题JAVA后台设置cors跨域中关于access-control-allow-headers导致的错误
cors跨域中关于access-control-allow-headers导致的错 1.详细错误信息是: Access to XMLHttpRequest at '[http://appservice ...
- 清除域控信息中不存在的域控制器对象
windows2003 域控信息清除域控制器对象 写在前面: 这里主要涉及的是主控制器损坏,无法修复.而辅助域控制器已做升级处理,而损坏的域控制器的信息却还在域控中存在,为了消除对客户端的影响,我们需 ...
- html中jsonp错误,解决jquery中jsonp格式跨域请求报parsererror的错误
在vs中创建一个空的mvc项目,在Controllers文件夹中添加一个控制器CommonController,并在该控制器下添加一个action用于获取服务器时间,代码如下: public Acti ...
- linux apache 跨域,解决nginx/apache静态资源跨域访问问题详解
1. apache静态资源跨域访问 找到apache配置文件httpd.conf 找到这行 #LoadModule headers_module modules/mod_headers.so 把#注释 ...
- 我也说说Nginx解决前端跨域问题,正确的Nginx跨域配置(后端Nginx CORS跨域配置、CORS设置,后端允许跨域请求)
最近连续两个朋友问我跨域相关问题,我猜想可能不少朋友也遇到类似问题,我打算写个博客聊一下我实际使用的配置, 先说明一下,我并不太了解这配置,没精力去了解太多,但我觉得其中有一些关键的小注意点,可能有些 ...
最新文章
- C++中const的用法
- BZOJ2281:[SDOI2011]黑白棋(博弈论,组合数学,DP)
- 【温故知新】CSS学习笔记(样式表)
- hdu5437(2015长春网络赛A题)
- 第四范式与赛诺贝斯达成战略合作,开启MarTech新篇章
- 身怀56个IM技术专利,网易云信如何改变即时通讯?
- 升级Python后yum不可用的解决方案
- idiom的学习笔记(一)、三栏布局
- tomcat PermGen space 不足的解决方法
- github博客安装jekyll的RUBY更换源
- 非华为电脑配对华为手机(RMB+5899¥)
- Thrift之代码生成器Compiler原理及源码详细解析2
- ae合成设置快捷键_【实用向】AE必备小技巧
- python程序员电脑推荐_2019程序员笔记本推荐?
- 15.CUDA编程手册中文版---附录K CUDA计算能力
- [黑马程序员C++笔记]P99-P104类和对象-封装
- Stable Fluids / Real-Time Fluid Dynamics for Games 笔记
- 一本大学计算机专业最新排名,中国校友会网2018中国大学计算机类各本科专业排行榜...
- CSS Tailwind
- 基于改进型生成对抗网络生成异构故障样本的方法
热门文章
- python3.5安装教程-Python 3.5安装教程
- python循环语句-python基础-循环语句(5)
- python 科学计算基础教程电子版-Python 科学计算基础 (整理)
- python下载的文件放在哪里的-python实现下载文件的三种方法
- python中and与or的执行顺序-python 代码运行顺序问题?
- NVIDIA Jetson Xavier NX上导入tensorflow报错:AttributeError: module ‘wrapt‘ has no attribute ‘ObjectProxy‘
- LeetCode Rectangle Area
- LeetCode Pow(x, n)
- 【Python】【函数式编程】
- 洛谷 P1678 烦恼的高考志愿