架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22200|回复: 4

[ASP.NET] asp.net mvc允许单个控制器方法跨域

[复制链接]
发表于 2018-7-31 10:13:37 | 显示全部楼层 |阅读模式
什么是Cors?

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

一、简介

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

所以简单来说Ajax不能够跨域,完全是一个浏览器行为,其实Web服务器程序(比如ASP.NET或PHP等)在默认情况下是无法辨别也不会去管到来的一个Http请求是不是一个跨域的Ajax请求,所谓的Ajax请求无法跨域完全是一个浏览器机制,是浏览器阻止了Ajax的跨域请求。而CORS正是用来解决这个问题的,W3C定制CORS标准给予了浏览器一种机制来允许Ajax的跨域请求。

二:原生js Ajax请求代码

由于不想引用jQuery,所有用js封装了一下方法,如下:

Ajax请求接口测试,发现会报错,如下:

QQ截图20180731094328.jpg


三:设置某个控制器方法允许跨域

一般允许所有的控制器或者api方法跨域,在web.config文件中的 system.webServer 节点下 增加如下配置:

上面并不是我们想要的结果!我们想只允许某个域名访问我们某个接口跨域,我们需要定义一个特性,代码如下:

其中设置跨域访问权限的代码就是这一段HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", origin);

我们在控制器方法上面设置特性如下:

我们再次发起Ajax请求,结果如下图:

QQ截图20180731095401.jpg QQ截图20180731095422.jpg

可以成功访问我们其他网站的api接口资源。

(完)





上一篇:大家好{:1_7:}
下一篇:CSS文本超出部分隐藏的两种方法
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2019-6-17 14:23:05 | 显示全部楼层
HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。

OPTIONS请求方法的主要用途有两个:

1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。

2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2019-11-4 17:29:52 | 显示全部楼层
jquery.min.js:2 Cross-Origin Read Blocking (CORB) blocked cross-origin response http://192.168.252.193:2019/home/test with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-1-19 15:33:23 | 显示全部楼层
跨域.jpg
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-11-12 15:59:52 | 显示全部楼层
写的不错,学习了
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-25 19:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表