首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将我的服务器连接到我馀下的cli应用程序

如何将我的服务器连接到我馀下的cli应用程序
EN

Stack Overflow用户
提问于 2016-05-17 10:06:45
回答 1查看 4.4K关注 0票数 3

我的服务器正在端口上工作:3000,我使用节点,在服务器端表示,这在使用curl或REST客户端时运行良好。

成员cli服务器正在运行端口:4200。

我在environment.js上添加了用于将服务器连接到客户端的代码。

代码语言:javascript
复制
contentSecurityPolicy: {
              'default-src': "'none'",
              'script-src': "'self' 'unsafe-inline' 'unsafe-eval'",
              'font-src': "'self'",
              'connect-src': "'self' http://localhost:3000",
              'img-src': "'self'",
              'report-uri':"'localhost'",
              'style-src': "'self' 'unsafe-inline'",
              'frame-src': "'none'"
     }

我的应用程序适配器代码是:

代码语言:javascript
复制
import JSONAPIAdapter from 'ember-data/adapters/json-api';

export default JSONAPIAdapter.extend({
    "host": "http://localhost:3000",
    "namespace": "api"
});

以这种方式运行我的服务器--在控制器上使用ajax调用的代理 http://127.0.0.1:3000

代码语言:javascript
复制
            $.ajax({
                    type: 'POST',
                    url: '/blog',
                    contentType: 'application/json',
                    data: param,
                    processData: false,
                    success :
              });

得到一个错误:POST http://localhost:4200/blog 500 (内部服务器错误)

我做了所有这些,但我不知道为什么不起作用。如果你对此有任何想法,请帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-17 13:45:53

您需要理解连接到API的两种方法之间的区别:

代理

您可以使用--proxy选项的ember-cli来代理所有向您的ember开发服务器发出的请求,而这些请求不是由ember处理到后端的。

这是一个很好的方法,因为从您的应用程序和浏览器的角度来看,您的后端和应用程序位于同一个主机上。

如果这样做,则不应该在适配器上指定host,也不应该将后端添加到CSP配置中。

然而,您可以这样做,只有在生产中,您服务您的余烬应用程序从您的后端。

CORS

连接到后端的另一种方式是直接将请求发送到另一个来源。但是,这将是CORS请求,因此它们需要在后端进行额外的配置!

如果您想直接从不同的来源获取数据,那么在浏览器中,您的服务器需要交付额外的HTTP头(CORS标头)。

但是,只有在生产中不从后端服务器交付前端的情况下,才应该这样做。

如果要使用CORS,则不应在运行ember serve时指定--proxy标志,而应指定host并正确配置CSP。

我还提到,您在=电话中漏掉了一个ember serve

这不是ember server --proxy http://127.0.0.1:3000,而是ember server --proxy=http://127.0.0.1:3000

通常,如果您执行ember serve --proxy=http://127.0.0.1:3000,那么HTTP对http://localhost:4200/blog的调用应该返回与http://127.0.0.1:3000/blog相同的内容。

为了测试这一点,我建议您使用像这一个这样的HTTP开发客户端。

我想您也可以在http://127.0.0.1:3000/blog上得到一个HTTP500。那么你的后端出了点问题。也许正确的URI是http://127.0.0.1:3000/blogs?那将是余烬违约。

如果您从ember应用程序中直接调用http://127.0.0.1:3000/blogs,那么如果不交付CORS头,这总是会导致错误。

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

https://stackoverflow.com/questions/37273075

复制
相关文章

相似问题

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