【发布时间】:2014-01-28 21:26:32
【问题描述】:
我需要帮助,因为我遇到了无法解决问题的问题。
我有一个在站点 A 上运行的 asp.net mvc webapi 和另一个在站点 B 上运行的站点。我相信这符合跨站点的定义。因此我有 nuget 'Microsoft.AspNet.WebApi.Cors' 并添加了“config.EnableCors();”到 WebApiConfig.cs 的注册方法。我还添加到站点 A 的 web.config 中
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS" />
<!-- Latest Browser Mode-->
<add name="X-UA-Compatible" value="IE=Edge" />
</customHeaders>
</httpProtocol>
除此之外,我已将 [EnableCors("", "", "*")] 添加到我正在使用的控制器基类中。
我认为这是为 webapi 站点启用 cors 所需的一切。
在站点 B 我有一个使用以下内容的 javascript 函数:
$.ajax({
url: url,
type: 'GET',
data: {},
dataType: 'json',
contentType: "application/json; charset=utf-8",
crossDomain: true,
success: function (data, textStatus, jqXHR) {
alert('success');
},
error: function (jqXHR, textStatus, err) {
if (window.console) console.log("Error with ajax call: " + err);
$('#findCustomer').text('Error: ' + err);
},
beforeSend: function (xhr) {
var headerValue = "Basic <somecode>";
xhr.setRequestHeader('Authorization', headerValue);
}
});
问题是我一直在访问 ajax 调用的错误处理程序,而错误是“无传输”。谁能看到我在这里做错了什么?
【问题讨论】:
-
查看 ajax 的标头,也许您不允许使用正确的标头。尝试
(不知道是否允许)。至少在 beforeSend 函数中添加您明确设置的授权。 -
这样做有点困难,因为即使提琴手也没有显示由于这段代码而离开的请求。注意:提琴手正在显示页面加载,但在运行此代码后没有请求。我已经在页面上放了hte调试器,可以验证代码是否到达了这段代码。
-
所以浏览器正在停止请求...将dataType更改为'jsonp'?
-
它出来了,但是 url 有参数并且当 &callback=
添加了错误 SCRIPT1004: Expected ';'被抛出。从请求返回的结果也是一个 JSon 字符串 -
检查我的答案并更新代码,看看是否能通过!
标签: jquery asp.net-mvc cors