jquery - 我可以对不同的门户网站使用 ajax GET 请求吗?

标签 jquery ajax json node.js cross-domain

我的前端与我的服务器在同一个域中,称之为 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/

相关文章:

php - 如何通过 POST AJAX 将 JS 数组传递给 PHP?

javascript - AJAX - 提交多个 POST 数据

单击时清除 jQuery 表单字段

jquery - 如何在 jquery.load 过程中添加 jquery load.gif?

jquery - 如何根据类名和属性名删除某个div?

javascript - 如何在目标之前插入 AJAX 输出然后隐藏它?

javascript - ajax将json值传递给html输入类型文本

javascript - 基于 json 模式中枚举值的两种方式绑定(bind)依赖关系

json - 类型错误 : Object of type is not JSON serializable

javascript - 使用jquery如何知道用户已重新加载网页?