在对Web API进行Ajax调用时出现CrossDomain问题

时间:2014-05-07 22:16:42

标签: ajax rest cross-domain asp.net-web-api

我的解决方案中有几个项目:WebApi和WebPage项目 Web API项目使用以下Url返回一些数据:

http://localhost:63983/api/values

我的主要网络项目使用另一个端口:

http://localhost:63421/#/

现在当我运行我的Web项目时,我试图对我的WebApi进行简单的Ajax调用 在这里我得到一个非常奇怪的错误: Firebug显示状态:200OK,但它用红色标记,我没有数据。

我认为它可能与跨域有关。

2 个答案:

答案 0 :(得分:0)

你猜是完全正确的。您不能读取其他域上的数据。域名是domain nameport。当一个人在HTTP(端口80)上,另一个在HTTPS(端口443)

时,这也适用

您可以通过在WebApi返回的内容中设置标头值,明确允许WebProject对WebApi进行AJAX调用。因此,当您对http // localhost:63983 / api / values进行AJAX调用时,它应包含HTTP标头:

Access-Control-Allow-Origin: http://localhost:63421

可在此处找到更多详细信息:http://css.dzone.com/articles/ajax-requests-other-domains

答案 1 :(得分:0)

您可以使用Microsoft.AspNet.WebApi.Cors nuget包在Web API中启用CORS支持。

安装上述软件包后,具有以下配置应解决您的问题。

config.EnableCors(new EnableCorsAttribute(origins: "*", headers: "*", methods: "*"));

此处有更多信息:
http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api