ASP.NET WebAPI2复杂请求跨域设置的方法介绍_实用技巧

来源:脚本之家  责任编辑:小易  

百度搜索:pro asp.net web apiwww.zgxue.com防采集请勿采集本网。

ASP.Net Core的跨域设置比较简单  官方都整合了 具体的参见微软官方文档:

先分析原因。 你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语

https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-3.1#ecors

你这种方式应该是没办法区分它们的。这里有两种方法调用你的函数: (1)指定路由:GetCustom()方法写下代码[Route("api/customers/GetCustomer ")],然后你可以用

跨域条件

干嘛存image类型的呢,直接存它的地址不就好了嘛!然后app调用 直接返回给他个地址 不就可以访问了!

跨域是指的当前资源访问其他资源时发起的http请求由于安全原因(由于同源策略,域名、协议、端口中只要有一个不同就不同源),浏览器限制了这些请求的正常访问,特别需要注意的是这些发生在浏览器中。

可以啊!你通过post进行请求

解决方法

用fiddler看下,是发的问题还是收的问题。

方法1.web.config文件中的 system.webServer 节点下 增加如下配置:

出于安全的考虑,JS是不允许跨域访问的。 但是如果你非要用JS实现,你可以写一个hander,然后JS调用这个hander。

<system.webServer><httpProtocol><customHeaders><add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/><add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/><add name="Access-Control-Allow-Origin" value="*" /></customHeaders></httpProtocol></system.webServer>

mvc4 的webapi 不好用,它规定的参数,格式太死了,我感觉,本来我也想用的 什么从url就能看出是什么操作,我觉得不是很方便 后来用wcf

方法2.Nuget包引用Microsoft.AspNet.Cors,然后在控制器上添加特性

应该是你的IIS配置问题,可能是没有启用asp.net。

[EnableCors(origins: "*", headers: "*", methods: "*")] 

soapUI 基于 Java 开发,支持多个平台,安装非常简单。可以到 soapUI 的 官方网站下载一个安装包。也可以到--Getting Started with ASP.NET Web API 2 服务进行测试.。

注意以上两种方法,不要重复设置,设置了两次会报错 'Access-Control-Allow-Origin' header contains multiple values '*, *',。

一般就是简单的调用一下接口,js就行。复杂的没用过。【飞鸽博客】作答

复杂请求问题

本文实例介绍了前端AngularJS向后端ASP.NET Web API上传文件的实现方法,具体内容如下 首先服务端: public class FilesController : ApiController { //using System.Web.Http

以上两个方法,仅对简单跨域请求有效,无法处理复杂的跨域请求。

Web API更倾向于基于HTTP协议的服务,直接返回用户的数据请求。MVC是建站的一种框架,倾向于返回用户的页面请求。我总结了以下 http://ASP.NET Web API 的特性,更能说

简单请求:请求方法是GET/HEAD/POST,并且contentType为text/plain、application/x-www-form-urlencoded、multipart/form-data。

IIS 配置 就可以了, 选中站点后选择 Http 响应头 , 右侧选择添加, Access-Control-Allow-Origin , 值设置为 * 另外将 <?xml version="1.0"?> <cross-domain-po

不满足上述条件的视为复杂请求,开发中我们常触发这个条件大多因为我们的请求的contentType设置的是application/json导致的。

给你个网址吧 51aspx.com 这是很全的,希望对你有帮助

注意:简单请求如果设置了Authentication认证header也会让请求“升级”为复杂请求。

MVC:是一个程序构架结构,m-model,v-view,c-controller web api:是一个resetful框架,asp.net webapi ef:一个orm框架,实现数据与数据实体的映射和数据维护

复杂请求会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错,而这次preflight的Http方法就是Options。换句话说,如果你的xhr请求发出前,会先发出一个Options请求,就说明你要执行的请求是复杂请求。

复杂请求处理

在Global.asax文件中,通过Application_BeginRequest方法进行处理:

protected override void Application_BeginRequest(object sender, EventArgs e){//直接设置所有的可跨域访问Response.Headers.Add("Access-Control-Allow-Origin",”*“);if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")//拦截处理Options请求{Response.Headers.Add("Access-Control-Allow-Headers", "*");Response.Headers.Add("Access-Control-Allow-Methods", "*");Response.Flush();Response.End();}base.Application_BeginRequest(sender, e);}

这样,对Options跨域请求进行了“可支持跨域”的应答,之后的正式请求到达控制器中的Action,又有相应的跨域访问处理。那么对于整个的复杂请求跨域就完成实现了。

微软官方参考:https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

总结

到此这篇关于ASP.NET WebAPI2复杂请求跨域设置的文章就介绍到这了,更多相关ASP.NET WebAPI2复杂请求跨域设置内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

 这篇文章主要介绍了ASP.net WebAPI 上传图片实例,有需要的朋友可以参考一下 代码如下: [HttpPost]  public Task<Hashtable> ImgUpload()  {      // 检查是否是 multipart/form-data      if (!Request.Content.IsMimeMultipartContent("form-data"))          throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);      //文件保存目录路径      string SaveTempPath = "~/SayPlaces/" + "/SayPic/SayPicTemp/";      String dirTempPath = HttpContext.Current.Server.MapPath(SaveTempPath);      // 设置上传目录      var provider = new MultipartFormDataStreamProvider(dirTempPath);      //var queryp = Request.GetQueryNameValuePairs();//获得查询字符串的键值集合      var task = Request.Content.ReadAsMultipartAsync(provider).          ContinueWith<Hashtable>(o =>          {              Hashtable hash = new Hashtable();              hash["error"] = 1;              hash["errmsg"] = "上传出错";              var file = provider.FileData[0];//provider.FormData              string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');              FileInfo fileinfo = new FileInfo(file.LocalFileName);                                  //最大文件大小              int maxSize = 10000000;              if (fileinfo.Length <= 0)              {                  hash["error"] = 1;                  hash["errmsg"] = "请选择上传文件。";              }              else if (fileinfo.Length > maxSize)              {                  hash["error"] = 1;                  hash["errmsg"] = "上传文件大小超过限制。";              }              else             {                  string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));                  //定义允许上传的文件扩展名                  String fileTypes = "gif,jpg,jpeg,png,bmp";                  if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)                  {                      hash["error"] = 1;                      hash["errmsg"] = "上传文件扩展名是不允许的扩展名。";                  }                  else                 {                      String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);                      String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);                      fileinfo.CopyTo(Path.Combine(dirTempPath, newFileName + fileExt), true);                      fileinfo.Delete();                      hash["error"] = 0;                      hash["errmsg"] = "上传成功";                  }              }              return hash;          });      return task;  }   内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net webapi跨域调用问题的解决方法
  • asp.net core webapi 服务端配置跨域的实例
  • asp.net webapi与ajax进行跨域数据交互时cookies数据的传递
  • asp.net仿新浪微博下拉加载更多数据瀑布流效果
  • gridview中动态设置commandfield是否可用或可见的小例子
  • asp.net mvc 权限过滤和单点登录(禁止重复登录)
  • asp.net(c#) web api通过文件流下载文件的实例
  • asp.net数据输出到excel表格中
  • datagridview右键菜单自定义显示及隐藏列功能
  • 完美兼容ie和firefox的asp.net网站加入收藏和设置主页
  • asp.net mvc中url地址传参的两种写法
  • asp.net导出excel乱码的原因及解决方法
  • 高效的使用 response.redirect解决一些不必要的问题
  • ASP.net WebAPI 上传图片实例
  • 推荐一本asp.net web api书籍呗
  • ASP.NET Web API和ASP.NET Web API 2有什么区别?
  • ASP.NET Web API实现POST报文的构造与推送
  • asp.net webapi 个人身份验证 token
  • asp.net WebAPI路由问题
  • asp.net webapi传输图片
  • asp.net web api get请求能在主体中包含自定义对象吗
  • asp.net web api 接收不到post数据问题
  • js调用跨域get请求调用asp.net webApi 多出个options请求是为...
  • c# ASP.net mvc web API 学web api 到底学的是什么?我现在知...
  • asp.net 发布 webAPI 到服务器,输入调用api后却找不到资源,输...
  • net web api怎么测试
  • asp.net开发百度地图api的web程序
  • AngularJS向后端ASP.NET API控制器上传文件
  • .net中MVC web项目和webapi有啥区别?
  • ASP.NET 5 MVC Ajax 请求请求 MVC WebAPI 报错 Access-C...
  • 求基于asp.net下web版的酒店预订方面网站的源码(最好是使用...
  • MVC、WEB API 和 Entity Framework之间有什么区别?
  • 请大家推荐一本讲解web api安全的书籍!
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.netasp.net webapi跨域调用问题的解决方法asp.net core webapi 服务端配置跨域的实例asp.net webapi与ajax进行跨域数据交互时cookies数据的传递asp.net仿新浪微博下拉加载更多数据瀑布流效果gridview中动态设置commandfield是否可用或可见的小例子asp.net mvc 权限过滤和单点登录(禁止重复登录)asp.net(c#) web api通过文件流下载文件的实例asp.net数据输出到excel表格中datagridview右键菜单自定义显示及隐藏列功能完美兼容ie和firefox的asp.net网站加入收藏和设置主页asp.net mvc中url地址传参的两种写法asp.net导出excel乱码的原因及解决方法高效的使用 response.redirect解决一些不必要的问题java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net对路径"xxxxx"asp.net汉字转拼音和获取汉字首字asp.net获得数据控件事件索引并获取其中值状态保存机制之viewstate概述及应用把时间戳转换为日期格式的js代码asp.net中实现文件的压缩和解压(3种方式浅析repeater控件的使用 (原样导出和动态asp.net 安全、实用、简单的大容量存储过asp.net运算符之逻辑运算符以及其他运算符asp.net简单生成验证码的方法aspnet中json的序列化和反序列化的方法asp.net的实用技巧详细介绍
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved