热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网页上传插件之WebUploader跨域上传遇到的问题总结

问题用WebUploader网页上传插件进行跨域上传的时候,只有IE可以成功,经过1天的调试发现问题所在在进行AJAX进行上传的时候,会先发送一个OPTIONS的预检请求,然而在I

问题

用WebUploader网页上传插件进行跨域上传的时候,只有IE可以成功,经过1天的调试发现问题所在

在进行AJAX进行上传的时候,会先发送一个OPTIONS的预检请求,然而在IIS的配置里面

技术分享

技术分享

没有允许OPTIONS的请求

所以我在服务端加断点调试发现请求根本进不去服务端的方法,而用IE的时候,IE根本没有预检请求,所以IE就可以调试成功

解决办法

技术分享

加入允许OPTIONS的条件,再次进行测试,问题解决

贴上服务端的代码吧,一个一般处理程序

<%@ WebHandler Language="C#" Class="receive" %>

using System;
using System.Web;
using System.IO;

public class receive : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        if (context.Request.HttpMethod.Equals("OPTIONS"))
        {
            context.Response.ClearContent();
            context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:61269");
            context.Response.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
            context.Response.AddHeader("Access-Control-Allow-Headers", "content-type");
            context.Response.AddHeader("Access-Control-Max-Age", "30");
            context.Response.End();
        }
        else if (context.Request.HttpMethod.Equals("POST"))
        {

            var files = context.Request.Files;
            for (int i = 0; i )
            {
                var file = files[i];
                var filePath = @"E:\PIC\" + Path.GetFileName(file.FileName);
                file.SaveAs(filePath);
            }
            context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:61269");
        }
    }

    public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

跨域的要点便是在响应头中加入

Access-Control-Allow-Origin:*

如果请求头中带有Origin,则Access-Control-Allow-Origin值不能为*,必须为一个URL

AJAX跨域知识参考

http://blog.csdn.net/net_lover/article/details/5172522

网页上传插件之WebUploader---跨域上传遇到的问题总结


推荐阅读
  • 本文介绍了如何使用 Gesture Detector 和 overridePendingTransition 方法来实现滑动界面和过渡动画。 ... [详细]
  • 在开发板的启动选项中看到如下两行:7:LoadBootLoadercodethenwritetoFlashviaSerial.9:LoadBootLoadercodethenwri ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 解决网页乱码问题的实用方法
    网页乱码问题在开发中较为常见,主要由文件编码、程序字符集设置和数据库连接字符集设置不当引起。本文将详细介绍如何逐一排查并解决这些问题。 ... [详细]
  • 本文通过一个示例展示了如何使用HTML和CSS美化并实现响应式的按钮组。 ... [详细]
  • Excel VBA自动化添加数字证书(续)
    本文继续探讨如何在Excel VBA中自动添加数字证书。上一篇文章因突发情况未能完成,本次将详细介绍证书的生成和集成方法。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 本文章提供了适用于 Cacti 的多核 CPU 监控模板,支持 2、4、8、12、16、24 和 32 核配置。请注意,0.87g 版本的 Cacti 需要手动修改哈希值为 0021 才能使用,而 0.88 及以上版本则可直接导入。 ... [详细]
  • 从零开始编译Linux系统:第16章 全新起点
    本章将详细介绍如何从零开始编译一套完整的Linux系统,涵盖关键组件如glibc库的介绍及其重要性。通过本文,读者将了解从源代码构建Linux系统的全过程。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 本文介绍了一种使用CSS3和jQuery实现的35款SVG图标加载动画。这些动画不仅视觉效果出色,还能提升用户体验。通过本文,您可以了解如何在项目中应用这些动画。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • 使用外部样式表实现盒子居中对齐
    本文介绍如何在HTML文件中引入外部CSS样式表,并通过CSS实现盒子的居中对齐。 ... [详细]
author-avatar
依然yang梓枫东_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有