如何使用Golang REST API正确设置Angular前端

我有一个用Golang编写的REST API和用Angular编写的前端在本地运行。 API在localhost:8000上运行,而Angular应用在localhost:4200上运行。 我的Angular应用程序频繁地对我的API进行GET / POST / DELETE / PUT调用。 我想将我的API和Angular应用程序分开,以便以后再添加Android或iOS客户端时,可以使用现有的API轻松地添加它。</ p>

我遇到的问题 是因为服务器和Web浏览器都阻止了我进行CORS,尤其是对于POST方法,并且我已针对本地开发采取了以下措施:</ p>


  • 添加 Access- Control-Allow-Origin:* </ code>到我的Golang API响应标头。</ li>
  • 在禁用网络安全性的情况下运行Chromium浏览器(否则该浏览器将POST转换为OPTIONS): $ chromium --disable-web-security --user-data-dir </ code> </ li>
    </ ul>

    使用上述设置,我可以在本地主机上运行Angular应用程序 :4200,然后在本地主机:8000上无问题地调用我的API。</ p>

    我想知道我应该如何在生产环境中进行设置。</ p>

    我的API 例如,将部署在 https://api.myapp.mywebsite.com 和我的Angular 应用将被部署 在 https://myapp.mywebsite.com 处(它们很可能位于不同的物理服务器上, IP)。 虽然我仍然可以让我的API接受来自其他来源的调用,但不能使所有客户端都以不安全的方式运行Angular应用。</ p>

    我在这里缺少什么?</ p>
    </ DIV>

展开原文

原文

I have a REST API written in Golang and front-end written in Angular running locally. The API is running on localhost:8000 and the Angular app is running on localhost:4200. My Angular application makes frequent GET/POST/DELETE/PUT calls to my API. I would like to keep my API and Angular app separated so that if later I want to add Android or iOS client, I can easily do so with my existing API.

The problem that I have is that both the server and web browser prevent me from CORS, especially for POST methods, and I have taken following action for local development:

  • Add Access-Control-Allow-Origin: * to my Golang API response headers.
  • Run Chromium browser with web security disabled (otherwise the browser is going to convert POST to OPTIONS): $ chromium --disable-web-security --user-data-dir

With the settings above, I can run my Angular app on localhost:4200 and call my API at localhost:8000 without issue.

I want to know how I should set up this in production.

My API will be deployed at https://api.myapp.mywebsite.com, for example, and my Angular app will be deployed at https://myapp.mywebsite.com (and they will most likely to be on different physical servers and IP). While I can still make my API accept calls from other origins, I cannot make all my clients running my Angular app in unsafe mode.

What am I missing here?

dongzhi6905
dongzhi6905 我曾经使用JavaScript/jQuery开发应用程序,但我真的不喜欢视图(静态HTML模板,css和js文件)与我的Go代码(尤其是加载模板)结合在一起的强烈程度。我还相信,将后端逻辑与前端逻辑分开会带来更好的体系结构。
2 年多之前 回复
doumei2023
doumei2023 为什么不使用同一个go网络服务器在localhost:8000上同时提供服务,为什么不为网站和api提供不同的路由?将localhost:8000/用于网站,将localhost:8000/api/用于API?
2 年多之前 回复
doupang4126
doupang4126 就我个人而言,我只是从Go应用程序中提供Angular应用程序,或者至少将它们保留在同一域中。没有理由您以后无法通过此设置添加其他客户端
2 年多之前 回复
duanhuantong8278
duanhuantong8278 有帮助吗?stackoverflow.com/questions/39507065/enable-cors-in-golang
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐