【问题标题】:Avoid Angular 2 and PHP cross-domain communication in the same computer避免 Angular 2 和 PHP 在同一台计算机上进行跨域通信
【发布时间】:2017-12-01 23:02:27
【问题描述】:

我正在开发一个 web 应用程序,我使用 Angunlar 2 作为我的前端框架和 CodeIgniter 3 作为我的后端框架。我使用 Angular-CLI,所以我的 Angular 应用程序在端口 4200 上运行,而我的“服务器端”在端口 80 上运行。

所以,当我尝试从 Angular 向 PHP 发出 post 请求时,由于端口不同,我正在发出跨域请求。我在 Chrome 的网络选项卡中检查了它,我看到两个请求已完成(一个用于选项,一个用于帖子本身)。

我遇到的问题是我无法确定接收帖子正文(我已将 Content-Lenght 更改为标题中的内容,并且始终处于运行时状态)。

我配置的标头是:

header('Content-Type: text/plain; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Headers: Content-Type');

问题是:这里有没有办法避免跨域?自然,我尝试在 80 端口启动服务,但它很忙。如果没有办法避免跨域,有人可以告诉我如何继续处理这个问题吗?

谢谢

【问题讨论】:

  • 我不得不提一下,我的 get 请求没有问题,我遇到的问题是 post 请求,问题是我在正文中没有收到任何内容(内容-lenght 为 2,我无法更改)
  • 对于那些有同样问题的人,@Raiper34 写的解决方案是完美的。如果您仍然遇到问题,可能是因为 $_POST 数组未填充。解决方案在这里:stackoverflow.com/a/14794856/3368457

标签: php angular request cross-domain


【解决方案1】:

您可以运行“google-chrome --disable-web-security --user-data-dir”或使用此插件https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi,因为服务器端设置不够,您还需要发送修改后的api调用。

【讨论】:

  • 完美!我试过了,我可以像在同一个域中一样处理请求
  • 虽然,我仍然没有收到请求的正文。我在服务器端尝试这个:echo json_encode($_POST]); 看看我是否收到了一些东西但什么也没有......
  • 你的意思是在服务器端吗?
  • 是的。我这样做是为了检查我是否收到了一些东西,但仍然什么也没有
  • 你看到了吗,数据是在 Chrome 开发者控制台中发送的?
猜你喜欢
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多