两个项目之间的请求和响应

Request and Response between two projects

提问人:Elnaz 提问时间:4/23/2016 最后编辑:Peter David CarterElnaz 更新时间:4/24/2016 访问量:42

问:

我正在尝试从事 2 个项目。第一个主要用于客户端(AngularJS+MVC)开发,第二个是服务器端,包括 Web API。我想使用 Web API 作为控制器。

我将服务器端项目设置为启动项目。然后将其 URL (localhost:..../) 设置为控制器的 URL,然后运行项目。之后,在浏览器中查看视图后,我也运行了我的视图。(来自客户端项目)。请求从第二个项目正确到达 API 控制器,但我没有保留任何响应。我想问题在于 URL 之间的区别。

你怎么看?那我该怎么办呢?

angularjs url 客户端 服务器端

评论


答:

0赞 SolomonT 4/23/2016 #1

你得到了什么样的回应?200(OK)状态还是其他什么?如果您尚未在 Web API 上启用 CORS,并且您正在从 Angular 项目的客户端发出 API 请求,您可能会收到 Cross Orgin 请求错误。

评论

0赞 Elnaz 4/23/2016
我在浏览器中检查了调试模式,我看到结果的长度是 744 个字符。但响应是空的。
1赞 SolomonT 4/24/2016
您是否检查过从 POSTMAN(chrome 插件)等 rest 客户端而不是从 angular 客户端进行调用时 api 返回的内容。即测试 API 本身并检查返回的响应是什么。如果您看到期望以这种方式返回的数据。这意味着你的 api 没问题。问题在于从 angular 客户端调用您的 api。
0赞 Elnaz 4/24/2016
请求的资源上不存在“Access-Control-Allow-Origin”标头。来源 'localhost:.......';因此,不允许访问。但正如你所说,我被设定了标题。我应该在我的 Web API 项目中做什么?
1赞 SolomonT 4/25/2016
您需要在 api 端启用 CORS 。如果您需要了解如何启用 CORS,以下文章非常有用。asp.net/web-api/overview/security/.......public static void Register(HttpConfiguration config) { config.EnableCors(new EnableCorsAttribute(ConfigurationManager.AppSettings[“CORSAllowedOrigins”], “”, “”) { SupportsCredentials = true, ExposedHeaders = { “Location” } });
0赞 luckyqiao 4/24/2016 #2

请不要介意我糟糕的英语。

两个项目是否在同一个域上提供服务?否则,可能存在跨域请求错误。你可以通过添加一些标头来修复它,如下所示: header('Access-Control-Allow-Origin','*'); header('Access-Control-Allow-Methods', 'GET,POST,DELETE,PUT,PATCH'); header('Access-Control-Allow-Headers','Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');

评论

0赞 Elnaz 4/24/2016
请求的资源上不存在“Access-Control-Allow-Origin”标头。源 'localhost:.......'因此,不允许访问。但正如你所说,我被设定了标题。我应该在我的 Web API 项目中做什么?
0赞 luckyqiao 4/24/2016
您应该在响应中设置这些标头,而不是在请求中设置这些标头。