首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建跨域请求?

如何创建跨域请求?
EN

Stack Overflow用户
提问于 2016-01-14 20:49:03
回答 7查看 104.5K关注 0票数 51

如何使用Angular 2创建跨域请求?

你能举个例子吗?

像在localhost:3000和localhost:8000跨域之间的请求

EN

回答 7

Stack Overflow用户

发布于 2016-01-14 20:52:05

事实上,对于跨域请求,在Angular2中没有什么可做的。CORS是浏览器原生支持的东西。此链接可以帮助您了解它是如何工作的:

  • http://restlet.com/blog/2015/12/15/understanding-and-using-cors/
  • http://restlet.com/blog/2016/09/27/how-to-fix-cors-problems/

简而言之,在跨域请求的情况下,浏览器会自动在请求中添加一个Origin头部。有两种情况:

  • Simple请求。如果我们使用HTTP GET、HEAD和POST方法,则适用此用例。对于POST方法,仅支持具有以下值的内容类型:text/plainapplication/x-www-form-urlencodedmultipart/form-data.
  • Preflighted请求。当“简单请求”用例不适用时,将发出第一个请求(使用HTTP OPTIONS方法),以检查在跨域请求的上下文中可以执行哪些操作。

因此,实际上,大多数工作都必须在服务器端完成,以返回CORS头。主要的是Access-Control-Allow-Origin

代码语言:javascript
运行
复制
200 OK HTTP/1.1
(...)
Access-Control-Allow-Origin: *

要调试此类问题,可以在浏览器中使用开发人员工具(“网络”选项卡)。

关于Angular2,只需像使用任何其他请求一样使用Http对象(例如相同的域):

代码语言:javascript
运行
复制
return this.http.get('https://angular2.apispark.net/v1/companies/')
           .map(res => res.json()).subscribe(
  ...
);
票数 42
EN

Stack Overflow用户

发布于 2016-07-04 17:48:14

对我来说,这是另一个问题。这对一些人来说可能是微不足道的,但我花了一段时间才弄明白。所以这个答案可能会对一些人有帮助。

我将我的API_BASE_URL设置为localhost:58577。在第100万次读取错误消息后,硬币掉了下来。问题出在它只支持HTTP和其他一些协议的部分。我必须更改API_BASE_URL,使其包含协议。因此,将API_BASE_URL更改为http://localhost:58577可以完美地工作。

票数 16
EN

Stack Overflow用户

发布于 2017-01-27 00:59:26

这在客户端是无能为力的。我在服务器端的控制器中添加了@CrossOrigin,它可以正常工作。

代码语言:javascript
运行
复制
@RestController
@CrossOrigin(origins = "*")
public class MyController

请参考docs

线路

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34790051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档