我的前端与我的服务器在同一个域中,称之为 X。但是,前端在端口 8080 上,服务器 (nodejs) 正在监听端口 1337 上的事件。每当我到达 X:1337在我的浏览器中,我在浏览器中显示了正确的 json。但是当我尝试从前端使用 ajax get 请求时,get 请求失败。在 Firebug 中,它只显示标题。是不是跨域问题?还是不同的端口无关紧要?
谢谢!
最佳答案
我不知道为什么这个问题被否决了,因为这实际上是一个有趣的问题,我自己也找到了解决方案。具体来说,我喜欢构建我的应用程序,使得前端是一个静态站点(roots/backbone/marionette 是一个很棒的堆栈),并从单独的 API 应用程序中提取数据而没有跨源问题,并且同时保持 cookie 完好无损,这样我就不需要进行 token 身份验证或任何操作。我不确定您是否遇到过类似的问题,但看起来您可能遇到过,所以这就是我的解决方法。
我所做的是使用 nginx 将我的两个服务器映射到一个域名上(我写了一个 getting started guide here )。这样,您就没有跨域问题,并且它们可以非常顺畅地协同工作。您可以使用如下指令在 nginx 中实现这一点:
server {
listen 1234;
server_name localhost;
# re-route all api requests and remove the
# /api piece before routing them through
location /api {
rewrite ^(/api)(.*)$ /$2 break;
proxy_pass http://localhost:1337;
proxy_set_header Host $http_host;
}
# pass through all other requests to the front end.
# in production this should be compiled and use a regular
# try_files block
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $http_host;
}
}
有了这段代码,您将在 localhost:1234
设置一个服务器,它将所有正常请求传递给运行在 8080
和任何前端以 /api
开头的请求到位于 1337
的 Node 服务器。此外,由于两者都在同一个域中,因此您不会遇到任何跨源问题。此设置在本地和生产环境中都能很好地工作。
关于jquery - 我可以对不同的门户网站使用 ajax GET 请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19569056/