使用Cors在WebApi中实现跨域请求,请求方式为angular的 $http.jsonp
使用Cors在WebApi中实现跨域请求
第一步,在webapi项目中安装cors

在Web API配置文件中(Global.asax)进行全局配置:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
#region 跨域请求
var config = GlobalConfiguration.Configuration;
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
#endregion
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
第二部,代码编写
控制器头部代码
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class MinderController : ApiController
{ }
返回数据源代码,请注意,这里一定不要返回为字符串。如果返回为字符串,那么JSONP的方法不会识别出来,将永远不会去调用Success方法,我使用的是
public HttpResponseMessage GetMindData(int? CompanyID, int? parent, string callback)
{ Object root = new Object(); return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(callback + "(" + JsonConvert.SerializeObject(root) + ")", System.Text.Encoding.UTF8, "text/plain")
};
}
代码2:改短代码是使用MVC的方式返回的JSONP数据:
public JavaScriptResult GetMindData(int? CompanyID, string callback)
{ Object root = new Object ();
root.root = company;
string js = callback + "(" + JsonConvert.SerializeObject(root) + ")"; return JavaScript(js);
}
前端的调用:
angular中$http请求JSONP
angular.module('kityminderDemo', ['kityminderEditor'])
.controller('MainController', function ($scope, $http, $sce) {
$scope.initEditor = function (editor, minder) {
window.editor = editor;
window.minder = minder;
/*
$http.get("e.html").then(function (data) { //查询Use里的所有数据
window.editor.minder.importData('json', JSON.stringify(data.data));
});
*/
var myUrl = "https://XXX?callback=JSON_CALLBACK";
$sce.trustAsResourceUrl(myUrl);
$http.jsonp(myUrl)
.success(function (response) {
var a = 0;
console.log(response);
window.editor.minder.importData('json', JSON.stringify(response));
}).error(function (e) {
console.log(e);
});
};
});
JS的JSONP请求方式:未经验证谨慎使用
$.ajax({
url: RESTurl,
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'myCallback'
});
window.myCallback = function (data) {
console.log(data);
};
使用Cors在WebApi中实现跨域请求,请求方式为angular的 $http.jsonp的更多相关文章
- vue项目中的跨域源请求拦截问题CORS头缺少'Access-Control-Allow-Origin'
这里使用的是axios发请求出现的. 访问的api接口是: 在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable 解决办法: 1.检查请求方 ...
- jQuery+ASP.NET MVC基于CORS实现带cookie的跨域ajax请求
这是今天遇到的一个实际问题,在这篇随笔中记录一下解决方法. ASP.NET Web API提供了CORS支持,但ASP.NET MVC默认不支持,需要自己动手实现.可以写一个用于实现CORS的Acti ...
- .net core webapi搭建(2)跨域
Core WebAPI中的跨域处理 在使用WebAPI项目的时候基本上都会用到跨域处理 Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 如图所示 修改 Configure ...
- ASP.NET MVC & WebApi 中实现Cors来让Ajax可以跨域访问 (转载)
什么是Cors? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源服务器,发出XMLHttpReq ...
- 第十四节:Asp.Net Core 中的跨域解决方案(Cors、jsonp改造、chrome配置)
一. 整体说明 1. 说在前面的话 早在前面的章节中,就详细介绍了.Net FrameWork版本下MVC和WebApi的跨域解决方案,详见:https://www.cnblogs.com/yaope ...
- ASP.NET Core-Docs:在 ASP.NET Core 中启用跨域请求(CORS)
ylbtech-ASP.NET Core-Docs:在 ASP.NET Core 中启用跨域请求(CORS) 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. ...
- 无需CORS,用nginx解决跨域问题,轻松实现低代码开发的前后端分离
近年来,前后端分离已经成为中大型软件项目开发的最佳实践. 在技术层面,前后端分离指在同一个Web系统中,前端服务器和后端服务器采用不同的技术栈,利用标准的WebAPI完成协同工作.这种前后端分离的&q ...
- js中各种跨域问题实战小结(一)
什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...
- 跨域调用webapi web端跨域调用webapi
web端跨域调用webapi 在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webap ...
随机推荐
- UE4命令行使用,解释
命令行在外部 从命令行运行编辑项目 1 导航到您的[LauncherInstall][VersionNumber]\Engine\Binaries\Win64 目录中. 2 右键单击上 UE4Edit ...
- poj2689 Prime Distance题解报告
题目戳这里 [题目大意] 给定一个区间[L,R],求区间内的质数相邻两个距离最大和最小的. [思路分析] 其实很简单呀,很明显可以看出来是数论题,有关于质数的知识. 要注意一下的就是L和R的数据范围都 ...
- JAVA的抽象类和接口
抽象类 在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对 ...
- 【easy】671. Second Minimum Node In a Binary Tree
Given a non-empty special binary tree consisting of nodes with the non-negative value, where each no ...
- 关于tarjan
关于Tarjan算法 梗概 tarjan算法有两种(我了解的),一种是用来求强连通分量的,另一种是关于割点和桥的问题. 根据机房大佬HL说过,这两种算法是互相独立的,只是代码很像. 强连通分量问题 关 ...
- echarts-map-区县
首先通过百度获取经纬度 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ...
- WIN10远程连接,报错身份验证错误,要求的函数不受支持
我电脑是win10系统,我办公时经常需要远程连接其他电脑.突然间远程连接时就开始报错以下错误,导致无法远程连接. 这可能是由于CredSSP加密Oracle修正. 解决方法: 运行 gpedit.ms ...
- 论文阅读笔记五十四:Gradient Harmonized Single-stage Detector(CVPR2019)
论文原址:https://arxiv.org/pdf/1811.05181.pdf github:https://github.com/libuyu/GHM_Detection 摘要 尽管单阶段的检测 ...
- Linux 下 MySQL-5.6.16 安装
转载请注明出处!!!! 卸载mysql 1 查找以前是否装有 mysql 命令:rpm -qa|grep -i mysql 2 将所有包删除 删除命令:rpm -e --nodeps 包名 3 删除 ...
- nginx 10054报错问题解决方案
使用nginx代理,端口8000.tomcat用于后端服务器,端口8080.nginx的error.log中报如下错误: 2018/09/21 09:08:06 [error] 12488#11600 ...