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

Ajax-'Origin localhost不允许Access-Control-Allow-Origin'

如何解决Ajax-'Origin localhost不允许Access-Control-Allow-Origin'

错误是由于跨域资源共享中强加了限制。这已作为安全功能的一部分实现,以通过跨域调用来限制资源的客户端(域)。当您将请求发送到Web服务或api或类似工具时,它会在服务器或目标(此处是api)的请求中添加Origin标头,以验证请求是否来自授权来源。理想情况下,API /服务器应OriginRequest header收到的信息中查找,并可能针对允许向其提供资源的一组来源(域)进行验证。如果来自允许的域,它将在响应标头中添加"Access- Control-Allow- Origin"值。也可以使用通配符,但是问题是,在获得通配符许可的情况下,任何人都可以发出请求并将其送达(有一些限制,例如通过Windows auth或cookie对api进行身份验证,不允许您发送该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.

希望这可以帮助!!!

解决方法

我是Ajax的新手,只是受过此跨域调用的任务。我们的网页上有一个文本框,用户可用来执行公司名称搜索。通过单击文本框旁边的按钮,将请求Ajax调用。不幸的是,Web服务位于单独的域中,因此自然会引起问题。

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

这又是错误消息:

Origin http://localhost:55152 is not allowed by Access-Control-Allow-Origin.

对于解决方法,我不知所措,将不胜感激任何想法。

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.");
        }
    });
}

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