gpt4 book ai didi

ember.js - 如何将我的服务器与我的 ember cli 应用程序连接

转载 作者:行者123 更新时间:2023-12-01 22:56:49 25 4
gpt4 key购买 nike

我的服务器正在端口:3000 上工作,我在服务器端使用节点、express,并且在使用curl 或 REST 客户端时工作正常。

ember cli 服务器正在端口:4200 上工作

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

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'"
}

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

import JSONAPIAdapter from 'ember-data/adapters/json-api';

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

以这种方式运行我的 ember 服务器ember 服务器 --proxy http://127.0.0.1:3000 在 Controller 上我使用 ajax 调用:

            $.ajax({
type: 'POST',
url: '/blog',
contentType: 'application/json',
data: param,
processData: false,
success :
});

出现错误:发布 http://localhost:4200/blog 500(内部服务器错误)

我已经完成了所有这些,但我不知道为什么它不起作用。如果您对此有任何想法,请帮助我。

最佳答案

您需要了解连接 API 的两种方式之间的区别:

代理

您可以使用 ember-cli--proxy 选项将所有向 ember 开发服务器发出但未被 ember 处理的请求代理到您的后端。

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

如果您这样做,则不应在适配器上指定主机或将后端添加到 CSP 配置中。

但是,只有在生产环境中从后端提供 ember 应用程序时,您才能执行此操作。

CORS

连接到后端的另一种方法是直接向另一个源发出请求。然而,这将是 CORS 请求,因此它们需要在您的后端进行额外配置!

如果您想直接从不同来源获取数据,在浏览器中您的服务器需要提供额外的 HTTP header (CORS header )。

但是,如果您不会在生产中从后端服务器交付前端,则应该这样做。

如果您想使用CORS,则在运行emberserve指定--proxy标志>,但指定主机并正确配置您的 CSP。

<小时/>

我还提到您在 emberserve 调用中错过了 =

它不是ember server --proxy http://127.0.0.1:3000而是ember server --proxy=http://127.0.0.1:3000!

通常,如果您执行emberserve --proxy=http://127.0.0.1:3000,则对http://localhost:4200/blog进行HTTP AJAX GET调用code> 应返回与 http://127.0.0.1:3000/blog 相同的结果。

为了测试这一点,我建议您使用 HTTP 开发客户端,例如 this one .

我假设您在 http://127.0.0.1:3000/blog 上也获得了 HTTP 500。那么你的后端出了问题。也许正确的 URI 是 http://127.0.0.1:3000/blogs?这将是 embers 默认值。

如果您从 ember 应用程序直接调用 http://127.0.0.1:3000/blogs,但如果您不传递 ,则始终会导致错误CORS header 。

关于ember.js - 如何将我的服务器与我的 ember cli 应用程序连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37273075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com