我很抱歉再次提出这个问题,但我没有找到适合我问题的答案。
我尝试构建以下内容: 我想用标准网页连接到WCF-Webservice。网站和Web服务都托管在同一台计算机上的IIS中。
我启用了跨域到web.config:
<webHttpBinding>
<binding name="webHttpBindingWithJSONP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
我的AJAX请求:
$.ajax({
type: "POST",
url: config.endpoints.db.production + "AddData/",
data: JSON.stringify(data),
contentType: "application/json",
dataType: "json",
crossDomain: true,
// processData: true,
success: function(data, status, jqXHR) {
// alert("success..." + data);
// loadingVisible(false);
// loadingFinished = true;
},
error: function(xhr) {
alert("failure..." + xhr.responseText);
// loadingFinished = true;
// loadingVisible(false);
}
});
在发出请求后,我在jquery的visual studio中得到了一个&#34; Access denied&#34; -Error。 在网上搜索后我发现这是一个非常常见的跨域问题,但我没有找到解决方案。我试着设置&#34; crossDomain:true&#34;在ajax-request中,尝试使用jsonp(这对我的GET请求有效)但没有任何帮助。
有没有正确的方法来解决这个问题?我读到这个问题可能通过ajax身份验证来解决。这是正确的,我怎样才能做到这一点?
答案 0 :(得分:0)
要解决此问题,请执行以下操作
创建Global.asax并添加以下内容以启用Ajax跨域POST
public void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST,OPTIONS");
if ((HttpContext.Current.Request.HttpMethod == "OPTIONS"))
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
}
在您的服务集
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
public class YourserviceName : YourserviceNameInterface