我是网络开发的新手,但我想为我为工作创建的现有Windows服务应用程序创建一个web api。
我现在的目标是创建一个简单的网络应用程序,其中包含一些文本输入字段,有人可以输入他们的电子邮件并订阅邮件列表。
我被指向使用OWIN在我现有项目中自我托管web api的方向,所以我查看了本指南以便开始:
https://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
本指南显示调用和显示API的控制台应用程序,但我想从Web应用程序执行相同操作。所以我尝试使用带有OWIN的控制台应用程序在“Getting Started with ASP.NET Web Api 2”指南中完成所做的工作。
当我启动我的控制台应用程序时,我可以输入http://localhost:8080/api/values/1
并获得<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">value</string>
我认为这意味着Web服务器正在运行并响应请求以获取我正在返回的字符串值来自我的ValuesController。
但是我一直在尝试创建一个简单的网页,调用API来获取value
,但我无法弄明白。
现在我的index.html在正文中有以下内容:
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
var uri = "http://localhost:8080/api/values/1";
$(document).ready(function () {
$.getJSON(uri)
.done(function (data) {
$('#value').text("done");
})
.fail(function (jqXHR, textStatus, err) {
$('#value').text('Error: ' + err);
});
});
</script>
我只是在页面上打印Error:
。我再次从事网络相关技术的工作,因此我们非常感谢任何指导。
答案 0 :(得分:0)
好的,按照评论中的讨论(帮助您调试应用程序)。 浏览器中的跨源安全策略限制网页调用存在于不同域上的数据源。域可以是不同的URL,也可以是同一URL的不同端口。
是来自:
的不同网址/域名有两个解决方案,要么利用JSONP,要么使用CORS向api发出请求,JSONP基本上将json数据包装在函数调用中。当api调用返回时,它会执行回调/函数调用,绕过安全限制。 但是,JSONP和CORS都需要服务器支持,这会带来解决方案2 ......
从API中提供您尝试使用的网页,这意味着您从同一个域提供服务,因此没有跨域问题!
很高兴你对它进行了整理,我知道它可能会让网络电话感到沮丧。