Apache和Nodejs跨域ajax问题

2024-04-11

我正在开发一个应用程序,其中我使用了托管在同一台机器上的两台服务器,其中一台是 apache,它将作为基本主机来服务 php 页面,另一台 Nodejs 用于其余 api 的通信,整个应用程序构建在backbone/marionette/requirejs/ 上引导程序。

说到这里,我的正常页面是从 apache 服务器加载的,例如,

http://192.168.20.62/project/design.php

我已经像这样配置了我的模型,

define(['backbone'],function(Backbone){
'use strict';

return Backbone.Model.extend({
    url:"http://192.168.20.62:9847/page",
    defaults: {
        ...
    }
});

});

当我尝试保存模型时,我遇到了ajax跨域调用的问题,并且在保存通信中出现错误,以下是节点/express服务器,

var express = require('/root/node_modules/express');


var app = express();

app.configure(function () {
    app.use(express.json());
    app.use(express.urlencoded());
    app.use(function (req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', 'http://192.168.20.62:9847');
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
        res.setHeader('Access-Control-Allow-Credentials', true);
        next();
    });

})

app.post('/page', function(request, response){

    console.log(request.body);
    response.send(request.body);

});

app.listen(9847);

正如你所看到的,我已经在服务器代码中编写了一些补丁,但仍然相同,我还在两者的根级别添加了 .htaccess

http://192.168.20.62 

and

http://192.168.20.62:9847 

使用以下代码,

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

但无论如何,事情都没有帮助,如果我通过禁用网络安全来运行 chrome,那么事情就会正常工作。

chrome.exe --禁用网络安全

你们能帮我解决这个难题吗,先谢谢了。

以下是来自 chrome javascript 控制台的错误消息

OPTIONS http://192.168.20.62:9847/page Origin http://192.168.20.62 is not allowed by Access-Control-Allow-Origin. jquery-2.0.3.min.js:6

XMLHttpRequest cannot load http://192.168.20.62:9847/page. Origin http://192.168.20.62 is not allowed by Access-Control-Allow-Origin. 

哎呀,我发现问题了,我为白名单设置了错误的网址。

res.setHeader('Access-Control-Allow-Origin', 'http://192.168.20.62');

我必须将生成跨域的源 URL 列入白名单,这是使事情运行所需的唯一更改。

此外,这还会对浏览器版本产生影响,当我发布此问题时,我正在使用 Firefox 版本 24.0.* 检查,当我升级 25.0 时,它令人惊讶地停止生成跨域错误。但 Chrome 仍然给出自然的跨域错误,当我仔细阅读 chrome 的错误消息时,我发现我将错误的网址列入了白名单。

XMLHttpRequest cannot load http://192.168.20.62:9847/page. The 'Access-Control-Allow-Origin' whitelists only 'http://192.168.20.62:9847'. Origin 'http://192.168.20.62' is not in the list, and is therefore not allowed access.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache和Nodejs跨域ajax问题 的相关文章

随机推荐

  • 在 JMeter 中,您可以指定变量来填充 HTTP 请求默认值吗?

    我希望能够从 CSV 文件中读取值 或者更理想的是 properties使用 JMeter 文件 然后在多个中使用它Test Plan是在HTTP Request Defaults as the Server Name or IP 以及Po
  • Ruby on Rails 日志文件太大

    我偶然发现我的rails3 1日志文件超级大 大约21mb 就尺寸而言 这样正常吗 生产环境中的日志文件是什么样的 另外 我可以去掉日志吗 谢谢 The logRails 应用程序的文件夹包含与每个标准环境相对应的三个日志文件 随着时间的推
  • 反应道具类型错误

    我正在尝试在 codepen 中创建网络应用程序 我正在使用 React ReactDOM 一切都很好 但是当我将react router dom添加到我的项目中时 出现错误 react router dom min js 1 Uncaug
  • Ansible:从意图文件创建字典

    shell gt cat myfile yml ABC ABC C01 host a1 prefixlen 19 host a2 prefixlen 19 DEF DEF C01 host d1 prefixlen 19 host d2 p
  • android bluetoothadapter.startLeScan,按 UUID 过滤

    我想使用以下命令扫描 BLE 设备startLeScan UUID serviceUuids LeScanCallback callback 方法 现在我有一个UUID 它是一个16位的值 例如 00000000 0000 1000 800
  • app.config修改值c#

    这个问题在这里得到解决App Config 更改值 https stackoverflow com questions 11149556 c sharp app config change value 接受的答案是 string appPa
  • Visual Studio 2019 中的工具版本

    我正在做几个项目从VS2010到VS2019的迁移 这些项目的 vcxprojs 中有工具版本 4
  • 如何监控Bolt的待处理队列的大小?

    我的拓扑有一两个瓶颈 Storm UI 中的容量指标对于识别这些非常有用 但我对 Bolt 队列的大小更感兴趣 我的理解是每个螺栓有两个队列 一个用于待执行的元组 另一个用于待发出的元组 是否可以监控这些队列的大小 我在网上找到了一些关于向
  • 为什么 scanf() 需要“%lf”来表示双精度数,而 printf() 只需使用“%f”就可以了?

    为什么会这样scanf 需要l in lf 当读一个double when printf 可以使用 f 无论它的参数是否是double or a float 示例代码 double d scanf lf d printf f d 因为对于采
  • 如何在执行android仪器测试时在cmd控制台中打印日志

    我在windows系统上打开cmd 然后输入 adb shell am instrument w com demo uia test android support test runner AndroidJUnitRunner 运行 And
  • const_cast 有用吗?

    最近我发现一段 C 代码可以有效地执行以下操作 char pointer const char constPointer const cast
  • 如何从 WebStorm 中运行 nodemon?

    我想用nodemon https github com remy nodemon从 WebStorm IDE 版本 7 中 Nodemon 监视源文件夹中的一个或多个文件 并在其中一个源文件发生更改时重新启动节点进程 本例中为 Expres
  • 使用 name(object) <- 向量重命名 xts 对象标头的 R 代码

    我是 R 学习新手 我的一些 R 代码有问题 为了您的方便 我放置了所有代码 以便您可以看到我正在尝试做的事情的逻辑 我的问题是重命名我的 xts 对象 Monthly Quotes 的标头 据我所知 当股票代码无效时 getsymbols
  • 原生 JS 相当于 jQuery 委托

    动态创建的 dom 元素上的事件委托的本机实现是什么 我尝试查看 jQuery 源代码 但无法遵循 on method 注意 目前我在创建 dom 元素后附加事件处理程序 这看起来很标准 但我喜欢 jQuery 的方式 on使用此语法处理动
  • 如何修复“找不到模块 vue-cli-service.js”?

    我正在设置一个新的 Vue 项目 当我运行命令时npm run serve进入CMD 出现如下错误 Error Cannot find module C Users Bram Wicherink vue cli service bin vu
  • 我们如何在 Swift 中实现等待/通知

    在Java中 我们可以这样做 synchronized a while condition false a wait time critical section do something 上面是一个条件同步块 它等待条件成功才能执行临界区
  • WPF 中的多重拖放 - 示例/示例/教程?

    我正在寻找一个示例或任何现成的解决方案 我可以将其集成到现有的应用程序中并使用多重拖放功能 当涉及到将多个项目从 ListBox 之类的控件拖放到另一个 ListBox 时 我在互联网上找到的大多数解决方案都不能很好地工作 谁能指出我的解决
  • 为什么值类型存储在堆栈中?

    为什么 C Net 更喜欢使用堆栈来存储值类型 这种设计背后的主要原因是什么 是因为对堆栈的读 写操作更好地利用了机器处理器吗 另外 也许你可以证明为什么其他人不可以 埃里克 利珀特讨论了这个here https learn microso
  • 自定义字体 Ionic 2

    因此 我尝试在 Ionic 2 应用程序中使用自定义字体 但由于某种原因 它显示的内容不正确 我的字体是 GothamRounded 因此我将所有 ttf svg otf 和 eot 文件复制到 Ionic 项目的 www fonts 文件
  • Apache和Nodejs跨域ajax问题

    我正在开发一个应用程序 其中我使用了托管在同一台机器上的两台服务器 其中一台是 apache 它将作为基本主机来服务 php 页面 另一台 Nodejs 用于其余 api 的通信 整个应用程序构建在backbone marionette r