【发布时间】:2013-03-10 04:51:12
【问题描述】:
我对 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.");
}
});
}
【问题讨论】:
-
尝试在您的响应标头中添加 Access-Control-Allow-Origin: *。
-
你能提供一个例子来说明如何做到这一点吗?
-
好的。这是 c# 代码。尝试 Response.AppendHeader("Access-Control-Allow-Origin", Request.Headers["Origin"]);或 Response.AppendHeader("Access-Control-Allow-Origin", "*");
-
抱歉,还是有点失落——这是哪里去了?在 Ajax 调用中?我用的C#语言很完美。
-
您的 ajax 调用很好。在您的服务器方法 (url) 中,您需要为“Access-Control-Allow-Origin”设置响应标头以匹配请求来源或设置 * 通配符.如果您将 ajax 调用与 withCredentials=true 一起使用,通配符可能不起作用。但在这里你似乎不喜欢这样做。所以尝试任何一个应该可以正常工作的选项。
标签: c# ajax jquery xmlhttprequest cross-domain