Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用jQuery - $.ajax()请求CORS

使用jQuery - $.ajax()请求CORS
EN

Stack Overflow用户
提问于 2014-12-30 21:52:34
回答 1查看 4.4K关注 0票数 0

我正在开发一个web应用程序,其中的数据来自不同的领域。我的意思是,在我的应用程序中,几乎90%的请求是跨域请求。

在IIS上部署此应用程序时,无法获取数据。

服务器部署在http://some.ip.add/crmservice上,客户端部署在http://diffent.ip.add/saascrm

我使用jQuery 2.0以异步方式使用$.ajax()获取数据;

注意:数据是xml格式的格式。

还向web.config文件添加了一些内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

这是我的片段。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.support.cors = true;
      $.ajax({
                        type: "GET",
                        url: 'http://some.ip.add/crmservice/crmservice.asmx/HandShake', 
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        crossDomain: true,
                        beforeSend: function (request) {
                        //    debugger;
                            request.setRequestHeader("Access-Control-Allow-Origin", '*');
                        },
                        error: function (xhr, status, error) {
                            try {
                              //  debugger;
                                // debugger;
                              //Here i am getting error : Access denied in IE 9.0 and and just "error" in firefox. 
                                var msg = JSON.parse(xhr.responseText);
                                alert(msg.Message);
                            }
                            catch (e) {
                                // debugger;
                                alert(xhr.statusText);
                            }
                            return true;

                        },
                        success: function (data) {
                            debugger;
                            xmlDoc1 = $.parseXML(data.d);
                            $xml1 = $(xmlDoc1);
                            if ($xml1.find('Result').text() == '0') {
                                $(this).MessageBox('success', $xml1.find('Message').text());
                                $("#uxDBName").prop("disabled", false);
                                $("#uxSUPassword").prop("disabled", false);
                                $("#uxServiceURL").prop("disabled", true);
                                GetListOfB1Databases(url);
                            }
                        }
                    });

我的服务器代码是:

Global.asax

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.Cache.SetNoStore();
        EnableCrossDmainAjaxCall();  
    }
    private void EnableCrossDmainAjaxCall()
    {
        HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");

        if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
        {
            HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Methods", "GET, POST");
            HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Headers","Content-Type, Accept");
            HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
            HttpContext.Current.Response.AppendHeader("Access-Control-Max-Age", "1728000");
            HttpContext.Current.Response.End();
        }
    }

     //Web method
     [ScriptMethod(ResponseFormat = ResponseFormat.Json), WebMethod(EnableSession = true)]
    public string HandShake()
    {
        return General.Response("0", "Tenant is in reachable. Please specify SAP Business One Company database\r\nand 'manager' Password", "");
    }

我还在上找到了一些解决方案,我发现IE8& 9不支持CORS,即8*9不创建XMLHttpRequest对象的实例。它创建XDomainRequest,因此需要检查用户代理。我找到了另一个解决方案这里

现在我的问题是,我在任何地方都使用了$.ajax()方法--几乎90%的调用是跨域调用。我不想在我的框架里做这个重大的改变。

是否有使用$.ajax()解决此问题的解决方案?

请帮帮我,我一个星期以来一直困得很重。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-01-02 02:00:26

谢谢你对我的合作和帮助。我找到了解决办法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 var url = $("#uxServiceURL").val();
        $.ajax({
            crossOrigin: true,
            url: url + '/HandShake',
            error: function (xhr, status, error) {
                try {
                    alert('Error');
                }
                catch (e) {
                    alert(xhr.statusText);
                }
                return true;
            },
            success: function (data) {
                var d1 = data.replace(/\&lt;/g, '<').replace(/\&gt;/g, '>')
                xmlDoc1 = $.parseXML(d1);

                $xml1 = $(xmlDoc1);
                if ($xml1.find('Result').text() == '0') {
                    $(this).MessageBox('success', $xml1.find('Message').text());
                   
                }
            }
        }); 

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27716777

复制
相关文章
Android Source Generator错误:无法找到基本名称xxx的包
File > Project Structure > facets > 添加Android-Gradle > 关闭并重新打开项目并重建.
可定
2020/04/20
8470
[1207]ImportError:无法导入名称“ RandomizedLogisticRegression”
ImportError:无法导入名称“ RandomizedLogisticRegression”
周小董
2023/10/10
4240
Netty在Dubbo中的线程名称
在项目中,我们会使用RocketMQ和Dubbo.前者用于发送或消费消息,后者用于两个模块之间的接口调用.
书唐瑞
2022/06/02
1.3K0
Netty在Dubbo中的线程名称
python包urllib名称
经查询,在python3.5版本中是使用urllib.request,而在python2.7中则是urllib2
努力在北京混出人样
2019/02/18
9850
破解在idea中无法加载spring cloud config中多环境配置之谜
1、config 默认Git加载 通过spring.cloud.config.server.git.uri指定配置信息存储的git地址,比如:https://github.com/xxx/config-repo
算法之名
2019/08/20
2.3K0
破解在idea中无法加载spring cloud config中多环境配置之谜
[1207]ImportError:无法导入名称“ RandomizedLogisticRegression”
ImportError:无法导入名称“ RandomizedLogisticRegression”
周小董
2023/10/10
4060
PHP中Redis扩展无法加载问题
phpredis编译出来的redis.so也需要拷贝到"/usr/lib64/php/modules/"中;
叫我可儿呀
2019/11/16
2K0
Idea 中图片资源无法加载问题
今天在看一个 Java 的小游戏时,遇到项目图片资源无法加载的问题,运行显示界面如图
攻城狮杰森
2022/06/03
2.9K0
Idea 中图片资源无法加载问题
springboot测试中主程序中能加载bean测试中无法加载bean
如遇到springboot版本的问题导致bean类无法注入到项目中,可能是注解和springboot版本不匹配导致启动类启动时扫描不到相应的bean类
一个风轻云淡
2022/11/13
1.8K0
springboot测试中主程序中能加载bean测试中无法加载bean
无法在R里面加载相应版本的python
reticulate可以实现R与python的相互切换,即在R里面调用python的脚本、模块等。
生信编程日常
2020/11/24
2.4K0
在Intellij IDEA中修改模板中user变量名称
默认IDEA取的是当前系统的用户名作为这个变量的,但是如果系统的用户名不是你期望的用户名,那么修改系统的用户名在IDEA中也还是使用的是旧的用户名。
前Thoughtworks-杨焱
2021/12/08
3.6K0
java中无法解析为类型_java无法解析导入的包
.odt文件是openoffice软件产生的文档格式,可以直接用office打开,这其实就是一个压缩包,可以使用解压软件打开,里面有一个content.xml文件,这个文件内有<text:p>标签,标签内就是展示出来的内容。
全栈程序员站长
2022/10/28
4.8K0
java:加载jar包中的动态库
java中System.load(String)方法可以加载一个动态库,有时为了便于管理和发行,我们会把动态库打包jar包一起发行。这时如何加载jar包中的动态库呢? 原理也很简单,就是先把动态库解
10km
2019/05/25
3.9K0
Gravatar 头像无法加载
由于众所周知的原因,头像服务器多数都无法正常访问,不管是http还是https。为了解决头像问题有两个办法:
obaby
2023/02/22
1.5K0
制作动态framework与静态framework的那些坑
今天我们来看看制作framework---dynamic和static这两中库需要注意的
大话swift
2020/05/08
2.1K0
制作动态framework与静态framework的那些坑
面试题:unittest加载测试用例名称必须以test开头,是否可以定制化
前几天,在一个群里,一个人问了,这样一个问题。说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化。他不知道为啥。
雷子
2021/03/15
1.3K0
面试题:unittest加载测试用例名称必须以test开头,是否可以定制化
Excel小技巧58: 在公式中快速应用名称
在Excel中,名称是一个非常好的功能,不仅能够简化公式,而且让公式的可读性更好。本文介绍一个小技巧,可以让定义的名称快速应用到公式中。对于使用单元格引用的公式,这是一个非常好应用名称的方法。
fanjy
2020/09/27
1.1K0
Excel小技巧58: 在公式中快速应用名称
问题idea maven无法加载导入子模块的依赖包的解决
还有个问题,如果使用自己下载的maven版本,会出现无法导入maven工程的错误;提示如下
JQ实验室
2022/06/09
2.8K0
在启动jar包时,发现内存不足无法启动
发现有一command为abrt-hook-ccpp的进程占用较多CPU和内存资源,如上图所示,abrt是AUTOMATIC BUG REPORTING TOOL的缩写。 解决方案 为了解决该问题,可以关闭abrt-hook-ccpp,具体操作如下:
高大北
2022/06/14
2.7K0
在启动jar包时,发现内存不足无法启动
点击加载更多

相似问题

将每个函数应用于列表Haskell的每个元素

24

如何在Haskell中将函数应用于列表中的每个元素?

119

应用于Haskell中嵌套列表的类似函数

12

将函数应用于Haskell中的元素列表

12

如何将高阶函数应用于Haskell中的有效函数?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文