在 ASP.Net MVC 中设置 Access-Control-Allow-Origin - 最简单的方法

2024-03-21

我有一个简单的操作方法,它返回一些 json。它在 ajax.example.com 上运行。我需要从另一个网站 someothersite.com 访问该网站。

如果我尝试调用它,我会得到预期的...:

Origin http://someothersite.com is not allowed by Access-Control-Allow-Origin.

我知道有两种方法可以解决这个问题:JSONP https://stackoverflow.com/questions/5968682/jquery-ajax-json-cross-domain-request-and-asp-net-mvc并创建一个自定义 HttpHandler http://tpeczek.blogspot.com/2010/09/httphandler-with-cross-origin-resource.html到 设置标题。

难道就没有更简单的办法吗?

一个简单的操作是否不可能定义允许的来源列表 - 或者简单地允许每个人?也许是一个动作过滤器?

最佳是...:

return json(mydata, JsonBehaviour.IDontCareWhoAccessesMe);

对于普通 ASP.NET MVC 控制器

创建一个新属性

public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
        base.OnActionExecuting(filterContext);
    }
}

标记你的行动:

[AllowCrossSiteJson]
public ActionResult YourMethod()
{
    return Json("Works better?");
}

对于 ASP.NET Web API

using System;
using System.Web.Http.Filters;

public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        if (actionExecutedContext.Response != null)
            actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");

        base.OnActionExecuted(actionExecutedContext);
    }
}

标记整个 API 控制器:

[AllowCrossSiteJson]
public class ValuesController : ApiController
{

或单独的 API 调用:

[AllowCrossSiteJson]
public IEnumerable<PartViewModel> Get()
{
    ...
}

对于 Internet Explorer

IE

使用nuget下载corsproxy并按照随附的说明进行操作。

博客文章 http://blog.gauffin.org/2014/04/how-to-use-cors-requests-in-internet-explorer-9-and-below/ | 源代码 https://github.com/jgauffin/corsproxy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.Net MVC 中设置 Access-Control-Allow-Origin - 最简单的方法 的相关文章

随机推荐

  • Emacs:如何将杀戮环从系统剪贴板中分离出来?

    默认情况下 Emacs 23 x 似乎会将被删除的内容复制到删除环和系统剪贴板 是否可以将杀戮环和剪贴板分开 例如 ctrl k 将内容放入终止环 cmd x 将内容放入系统剪贴板并保留终止环 这在中讨论过这个线程 http lists g
  • 如何在每个测试方法之前和之后执行sql脚本

    有一个 Sqlspring中的注释允许执行sql测试方法前后的代码 Test Sql init sql Sql scripts clean sql executionPhase Sql ExecutionPhase AFTER TEST M
  • 与 Kotlin 泛型的混淆

    我是 Kotlin 的新手 我正在尝试编写一些相当简单的代码 但是我不知道如何使用泛型来使其工作 我有一个Handler代表事物处理程序的特征 我无法更改处理程序的代码 因为它来自库 trait Handler
  • 当我构建多个 ProductFlavors 时,使用 Facebook SDK INSTALL_FAILED_CONFLICTING_PROVIDER

    我正在构建一个包含多个 Android 应用程序productFlavors 并使用Facebook SDK v4 1进行登录和分享内容 问题是 当我尝试在已安装相同应用程序 但风格不同 的设备上安装应用程序时 会引发错误 它不允许我安装第
  • 如何向 Quill.js 添加新格式(
    标签)?

    我想添加一个按钮来添加 hr 标记到quill js 测试版 http beta quilljs com docs quickstart editor 这里的fiddle https jsfiddle net Lgxkj4ag div sp
  • 如何多次发送文件

    有两个 C 项目 一个项目用于客户端 另一个项目用于服务器 第一步是运行服务器 然后选择一个目标文件夹 然后运行客户端项目 选择一些text txt发送到服务器的目标文件夹 只有客户端可以向服务器发送文件 Demo 1 choosing f
  • 为什么有些资源文件放在META-INF目录下

    我想知道为什么有些资源文件放在JAR中的META INF目录下 我总是将像 test properties 这样的资源放在根目录下 将它们放入 META INF 有什么好处吗 许多 Java EE API 都有一个约定 即当您将特定的配置
  • iText,Font、BaseFont 和 createFont() 发生了什么?

    关于 font 和 basefont 的情况对我来说有很多谜团 尤其是当涉及到构造函数时 iText 网站提供了这一行作为新字体的示例代码 BaseFont unicode BaseFont createFont c windows fon
  • Rails 4 - 如何使用枚举?

    我正在尝试在 Rails 4 上制作一个应用程序 我发布了这个问题并得到了一些建议 Rails 4 Simple Form 如何保存键和显示值 https stackoverflow com questions 36539924 rails
  • 如何使用 OpenCV 交换图像中的蓝色和红色通道

    我在交换图像的通道 特别是红色和蓝色 时遇到了一些问题 我正在使用 Opencv 3 0 0 和 Python 2 7 12 以下是我交换频道的代码 import cv2 img cv2 imread input car1 jpg The
  • 逗号运算符重置此

    在下面code https www typescriptlang org play src var 20x 20 3D 20 7B 20f 3A 20function 20 20 7B 20return 20this 20 3D 3D 3D
  • 将图像缩略图添加到网格布局中?

    我有一个图像列表 我需要将小缩略图添加到框架中 我目前有框架SpringLayout 如何使用滚动窗格在某些网格中添加缩略图 如时尚 照片列表可能很大 所以我需要一个滚动窗格 我不知道如何处理这个问题SpringLayout 我知道如何添加
  • 如何在Python中将pptx导出为图像(png、jpeg)?

    我用 Python 开发了一段小代码来生成 PPTX 文件 但我还想生成一张 PNG 或 JPEG 格式的幻灯片图片 from pptx import Presentation from pptx util import Inches im
  • 为 Blazor WASM 保存时重新编译 .razor 文件

    有没有办法让 Blazor WebAssembly 重新编译 razor文件更改 更新然后保存时 我已经习惯了这种情况在传统的 ASP NET Core MVC razor 视图以及客户端框架 如 Angular 中发生 在 ASP NET
  • DRAM 访问的性能计数器

    我想找回DRAM 存取次数在我的应用程序中 准确地说 我需要区分数据和代码访问之间 该处理器是一个Intel R Core TM i7 4720HQ CPU 2 60GHz Haswell 基于英特尔软件开发人员手册 第 3 卷 https
  • 无法在生产环境中实例化模块

    我刚刚将我的程序推送到 Heroku 上 并且我测试 Angular 的页面加载了以下错误 未捕获错误 injector modulerr 无法实例化模块 diceAngularApp 原因是 错误 injector unpr 未知提供者
  • python中使用numpy数组出现内存错误

    我收到此代码的以下错误 model lda LDA n topics 15 n iter 50 random state 1 model fit X topic word model topic word print type topic
  • 尝试将 AWS DynamoDB 与 Swift 3 结合使用时出现很多错误

    我是快速开发的新手 正在尝试合并后端 我认为 AWS 将是实现我想要完成的任务的好方法 我目前只是想获取他们为您创建的示例项目文件 它有很多错误 令人难以置信 我意识到 AWS 在 Swift 2 中创建文件 因此在 Swift 3 中运行
  • 如何使输入和选择字段的宽度相等

    在表单上 我有一个选择字段和两个输入字段 这些元素垂直对齐 不幸的是 我无法获得这些元素的相同宽度 这是我的代码
  • 在 ASP.Net MVC 中设置 Access-Control-Allow-Origin - 最简单的方法

    我有一个简单的操作方法 它返回一些 json 它在 ajax example com 上运行 我需要从另一个网站 someothersite com 访问该网站 如果我尝试调用它 我会得到预期的 Origin http someothers