.NET Framework应用跨域问题解决方案_.net 跨域-程序员宅基地

技术标签: 跨域  .Net  .NET  

一、简介

CORS 全称 Cross-Origin Resource Sharing,是一种允许当前域(domain)的资源(比如 html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。
在这里插入图片描述

二、解决方案

解决方案有多种,可以直接给 HttpResponseMessage 添加一个 Access-Control-Allow-Origin header、在 Webconfig 文件中配置、使用 MVC Filter 进行添加 Access-Control-Allow-Origin header 等

注意:如果是 IOS 12 中的 Safari 浏览器,配置为 * 是没有作用的,需要配置为固定的域名 htts://www.xxxxx.com

2.1 HttpResponseMessage

可以在 Action 中可以直接给 HttpResponseMessage 添加一个 Access-Control-Allow-Origin header。代码如下

public HttpResponseMessage GetBookInfo(int id)
{
    
  BookDto book = db.Books.Include(b=>b.Author).Where(b=>b.BookId==id).Select(AsBookDto).SingleOrDefault();
  if (book == null)
  {
    
  	return Request.CreateErrorResponse(HttpStatusCode.NotFound, "未找到实例");
  }
  var response = Request.CreateResponse(book);
  //有Access-Control-Allow-Origin响应头,浏览器才会把响应给客户端,* 表示允许任何来源的请求
  response.Headers.Add("Access-Control-Allow-Origin", "*");
  return response;
}

2.2 Web.config

如果你的平台是 .Net Framework,可以在在 Webconfig文件中配置以下节点,使用配置文件时要先移除后添加,确保起作用。如下

<system.webServer>
  <httpProtocol>
  <!--跨域设置-->
    <customHeaders>
    <remove name="Access-Control-Allow-Origin" />
    <remove name="Access-Control-Allow-Headers" />
    <remove name="Access-Control-Allow-Methods" />
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="*" />
    <add name="Access-Control-Allow-Methods" value="*" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

2.3 MVC Filter

添加一个名为 CorsFilter 的过滤器,期主要作用是给 Response 添加 Access-Control-Allow-Origin header,这个过滤器的注册可以使用全局,也可以在 Controller、Action 上。核心代码如下

/// <summary>
/// 跨域
/// </summary>
public class CorsFilter:ActionFilterAttribute
{
    
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
    
    	base.OnActionExecuted(actionExecutedContext);
    	actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46785144/article/details/128165948

智能推荐

[附源码]Python计算机毕业设计服装销售商城系统_分销系统开源 python-程序员宅基地

文章浏览阅读206次。项目运行环境配置:Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs。项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;_分销系统开源 python

Docker启动时报错:We could not resolve DockerHub using DNS._unable to retrieve dockerhub-程序员宅基地

文章浏览阅读230次。Docker启动时报错:We could not resolve DockerHub using DNS.解决方法:依次检查Firewalld、NetWorkManager、selinux的状态,并关闭关闭Firewalldsystemctl status firewalldsystemctl stop firewalldsystemctl disable firewalld..._unable to retrieve dockerhub

LightOJ1213 Fantasy of a Summation —— 快速幂-程序员宅基地

文章浏览阅读79次。题目链接:https://vjudge.net/problem/LightOJ-12131213 - Fantasy of a SummationPDF (English)StatisticsForumTime Limit:2 second(s)Memory Limit:32 MB...

swiper 前进后退按钮的显示和隐藏_swiper隐藏箭头显示-程序员宅基地

文章浏览阅读4.1k次。swiper 前进后退按钮的显示和隐藏鼠标进入和离开时,前进后退按钮显示和隐藏<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://unpk_swiper隐藏箭头显示

Go语言的string(底层结构+常用方法)_go .new.string(-程序员宅基地

文章浏览阅读3k次。字符串Go语言中的字符串是通过UTF-8编码,字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符 。字符串底层结构是一个起始地址和长度(字节个数)字符串转义符Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等转义符含义/r回车符/n换行符/t制表符/’单引号/"双引号//反斜杠例如://打印一个Windows平台下的一个文件路径package mainimport ( "_go .new.string(

python爬虫基本概述_爬虫脚本是干什么的-程序员宅基地

文章浏览阅读3.6k次。python爬虫基本概述一、爬虫是什么二、爬虫可以做什么三、爬虫的分类四、爬虫的基本流程一、爬虫是什么 网络爬虫(Crawler)又称网络蜘蛛,或者网络机器人(Robots). 它是一种按照一定的规则, 自动地抓取万维网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页 内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页 的内容。 爬虫是一个模拟人类请求网站行为, 并批量下载网站资源的一种程序或自动..._爬虫脚本是干什么的

随便推点

用C语言编程16点阵字库-程序员宅基地

文章浏览阅读2.8k次。#include #include #include #include #include #include #include #define GETADR(n,str) (str *) calloc (n,sizeof(str)) // 申请N个指定字符串长度的地址#define W16 16 #define C16 32 unsigned char bi

Android:实现安卓小程序-记事本(备忘录)的开发-程序员宅基地

文章浏览阅读410次,点赞4次,收藏6次。上面这些公司都是时下最受欢迎的互联网大厂,他们的职级、薪资、福利也都讲的差不多了,相信大家都是有梦想和野心的人,心里多少应该都有些想法。也相信很多人也都在为即将到来的金九银十做准备,也有不少人的目标都是这些公司。我这边有不少朋友都在这些厂工作,其中也有很多人担任过面试官,上面的资料也差不多都是从朋友那边打探来的。除了上面的信息,我这边还有这些大厂近年来的面试真题及解析,以及一些朋友出于兴趣和热爱一起整理的Android时下热门知识点的学习资料。

C# “贝格尔”编排法-程序员宅基地

文章浏览阅读114次。原文:C# “贝格尔”编排法采用“贝格尔”编排法,编排时如果参赛队为双数时,把参赛队数分一半(参赛队为单数时,最后以“0”表示形成双数),前一半由1号开始,自上而下写在左边;后一半的数自下而上写在右边,然后用横线把相对的号数连接起来。这即是第一轮的比赛。第二轮将第一轮右上角的编号(“0”或最大的一个代号数)移到左角上,三轮又移到右角上,以此类推。即单..._c# 贝格尔编排算法

大学生网页制作期末作业——html+css+javascript+jquery旅游官网6页 html大学生网站开发实践作业 web网页设计实例作业_北京理工大学首页设计源码-程序员宅基地

文章浏览阅读286次。静态网站的编写主要是用 HTML DⅣV+ CSSJS等来完成页面的排版设计,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉导航栏、鼠标划过效果等知识点,学生网页作业源码,制作水平和原创度都适合学习或交作业用,记得点赞。 精彩专栏推荐 【作者主页——获取更多优质源码】 【web前端期末大作业——毕设项目精品实战案例(1000套)】 旅游景_北京理工大学首页设计源码

用于生成随机数的python标准库模块是_详解Python基础random模块随机数的生成-程序员宅基地

文章浏览阅读966次。详解Python基础random模块随机数的生成来源:中文源码网浏览: 次日期:2019年11月5日【下载文档:详解Python基础random模块随机数的生成.txt】(友情提示:右键点上行txt文档名->目标另存为)详解Python基础random模块随机数的生成随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数..._随机数用哪个库

【读心之术】2-程序员宅基地

文章浏览阅读190次。作者:waiyweiys 回复日期:2012-05-08 18:33:26 从一个人的键盘磨损度可以看出很多东西。比如:     1、W严重磨损                原因:FIFA的加速键是W。  分析:此人是个FIFA高手。这种人在看球时左手中指会不自觉地狂点;踢球时会抱怨说:又按错键了;跑步时会默念:w、w、w……    2、A..._之术2

推荐文章

热门文章

相关标签