.net mvc webapi 解决前端跨域问题

跨域问题的原因不解释了,直接设置两步就可以解决前端跨域问题

1.Gloabel.asax文件中

        //解决跨域问题
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
            {
                HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            }
            else
            {
                HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST,PUT, DELETE");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type");
            }
        }

  

2. Web.config中

<system.webServer>

</system.webServer>

之间加入代码

<system.webServer>

    <!--解决跨域问题-->
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Max-Age" value="30"/>
        <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

  

网上的博客有的提及了一个, 结果设置之后都出现405或者其他跨域提示, 设置这两步便可实现.net 前端跨域,

时间: 2024-12-12 06:01:33

.net mvc webapi 解决前端跨域问题的相关文章

JAVA解决前端跨域问题。

什么是跨域? 通俗来说,跨域按照我自己的想法来理解,是不同的域名之间的访问,就是跨域.不同浏览器,在对js文件进行解析是不同的,浏览器会默认阻止,所以 现在我来说下用java代码解决前端跨域问题. 用java代码解决前端跨域问题? 找到WEB-INF下面的web.xml文件,输入下面代码,在web.xml文件下面: 1 <!-- 解决跨域访问的问题 --> 2 <filter> 3 <filter-name>cors</filter-name> 4 <

解决前端跨域请求的几种方式

利用 JSONP 实现跨域调用 说道跨域调用,可能大家首先想到的或者听说过的就是 JSONP 了. 1.1 什么是JSONP JSONP 是 JSON 的一种使用模式,可以解决主流浏览器的跨域数据访问问题.其原理是根据 XmlHttpRequest 对象受到同源策略的影响,而 <script> 标签元素却不受同源策略影响,可以加载跨域服务器上的脚本,网页可以从其他来源动态产生 JSON 资料.用 JSONP 获取的不是 JSON 数据,而是可以直接运行的 JavaScript 语句. 1.2

webapi 解决ajax跨域请求问题

webapi在配置文件中加入这几句就可以解决浏览器跨域请求调用的问题?为什么呢? <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="true" /> <httpProtocol> <customHeaders> &

nginx反向代理-解决前端跨域问题

1.定义 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源.注意:跨域限制访问,其实是浏览器的限制.理解这一点很重要!!! 2.跨域访问示例 假设有两个网站,A网站部署在:http://localhost:81 即本地ip端口81上:B网站部署在:http://localhost:82 即本地ip端口82上. 现在A网站的页面想去访问B网站的信息,A网站页面的代码如下(这里

spring cloud 解决前端跨域

利用拦截器 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String origin = request.getHeader("Origin"); logger.info("进入AllowOriginIntercepter 拦截 origin={}",origin); Strin

使用nginx反向代理解决前端跨域问题

1. 首先去Nginx官网下载一个最新版本的Nginx,下载地址:http://nginx.org/en/download.html.我这里下载的版本是:nginx/Windows-1.12.0.下载完成之后,得到一个.zip的压缩包,把压缩包解压到E盘根目录.如图1-1 2. 打开目录 E:\nginx\conf ,编辑nginx.conf文件,修改成如下: #user nobody; worker_processes 1; #error_log logs/error.log; #error_

前端跨域方案-跨域请求代理(asp.net handler)

现在技术开发偏向于使用统一的接口处理浏览器或者app的http请求. 大家都知道因为浏览器的同源策略的原因 js直接请求webapi 接口会有一些问题,即使做好服务器端的配置 同样会有不少的 问题  并且会有浏览器的兼容性 而使用jsonp 又需要服务器端对返回数据做相关处理 所以考虑考虑使用代理来解决前端跨域请求的问题. 代理程序走asp.net的一般处理程序,来实现前端js请求的接受然后转发到api站点. 关键点: 1.使用url参数的方式传送api接口的站点路径 http://test.m

解决vue+springboot前后端分离项目,前端跨域访问sessionID不一致导致的session为null问题

问题: 前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话. 在后台打印sessionID我们会发现, 每次请求的sessionID都是不同的, 既然每次请求都是一个新的会话, 那我们去获取session的时候自然就是null了. 解决办法如下: 环境: vue 2.0 springboot 2.1.6 一.前端部分 1.  在vue引入axios的位置添加以下代码 import axios from 'axios' axios.defau

跨域调用webapi web端跨域调用webapi

https://www.baidu.com/s?ie=UTF-8&wd=webapi%20%E8%B7%A8%E5%9F%9F web端跨域调用webapi 在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webapi的程序,如下图所示: 由于微软已经给我们搭建好了webapi的环境,所以我们不必去添加引用一些dll,直接开始写代码吧. 因为这只是做一个简单的Demo,并没有连接数据库.