微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Ajax – “Access-Control-Allow-Origin”不允许“原始localhost”

我对Ajax比较陌生,只是负责这个跨域调用.我们的网页上有一个文本框,用户可以使用该文本框预先搜索公司名称.通过单击文本框旁边的按钮,将请求Ajax调用.遗憾的是,Web服务位于一个单独的域中,因此这自然会导致问题.

以下是我做这项工作的最佳尝试.我还应该注意,此调用的目的是以XML格式返回结果,该格式将在请求的成功部分中进行解析.

这是错误消息:

Access-Control-Allow-Origin不允许使用origin http:// localhost:55152.

我不知道如何处理解决方案,任何想法都会受到高度赞赏.

function GetProgramDetails() {
    var URL = "http://quahildy01/xRMDRMA02/xrmservices/2011/OrganizationData.svc/AccountSet?$select=AccountId,Name,neu_UniqueId&$filter=startswith(Name,\'" + $('.searchBox').val() + "\')";
    var request = $.ajax({
        type: 'POST',
        url: URL,
        contentType: "application/x-www-form-urlencoded",
        crossDomain: true,
        dataType: XMLHttpRequest,
        success: function (data) {
            console.log(data);
            alert(data);
        },
        error: function (data) {
            console.log(data);
            alert("Unable to process your resquest at this time.");
        }
    });
}

解决方法:

错误是由于跨域资源共享中强制实施的限制.这已作为安全功能的一部分实现,以通过跨域调用限制资源的客户端(域).当您向webservice或api或类似设备发送请求时,它会在服务器或目标请求(此处为您的api)中添加Origin标头,以验证请求是否来自授权来源.理想情况下,api / server应该在它收到的Request头中查找Origin,并且可能根据允许为其提供资源的源(域)集进行验证.如果它来自允许的域,它将在响应头中添加与“Access-Control-Allow-Origin”值相同的域.也允许使用通配符,但问题是,通过外卡允许,任何人都可以发出请求并获得服务(有一些限制,例如api通过windows auth或cookie验证,你需要发送withCredentials值*是不允许).使用通配符来源响应标头并不是一个好习惯,它使每个人都可以使用它.

以下是使用值设置响应标头的一些方法: –

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: http://yourdomain.com

你甚至可以在同一个响应中添加多个Access-Control-Allow-Origin标头(我相信在大多数浏览器中都有效)

Access-Control-Allow-Origin: http://yourdomain1.com
Access-Control-Allow-Origin: http://yourdomain2.com
Access-Control-Allow-Origin: http://yourdomain3.com

在服务器端(c#语法)你会这样做: –

var sourceDomain = Request.Headers["Origin"]; //This gives the origin domain for the request
     Response.AppendHeader("Access-Control-Allow-Origin", sourceDomain ); //Set the response header with the origin value after validation (if any) .Depending on the type of application you are using Syntax may vary.

希望这可以帮助!!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐