我正在尝试创建一个网站,其中每个网页都有相同的标题栏 - 这是一个非常标准的问题。要加载标题栏的HTML,我使用jQuery"加载"方法:
$("#title-bar").load("path/to/titlebar-code.html")
然而,很明显,#34;加载" 真的非常不喜欢从本地文件系统加载文件。我无法访问远程服务器,因此这是一个问题。 (我依靠我的大学来主持这个网站,他们还没有设置服务器。)所以在解决这个问题之前我无法查看或测试该网站。
尝试的解决方案:我尝试使用我发现的代码here运行带有Node.js的本地服务器,以欺骗jQuery发出请求。这是服务器代码:
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(8080);
新的jQuery请求:
$("#title-bar").load("http://localhost:8080/path/to/titlebar-code.html")
...返回错误:
否'访问控制 - 允许 - 来源'标题出现在请求的上 资源。起源' null'因此不允许访问。
我的网络体验有限,我不确定如何继续。有谁知道加载这样的文件的方法? (完全不同的解决方案是受欢迎的; Node和jQuery看起来似乎是有希望继续的方式)
解决
根据下面的Hanlet评论,我从http://localhost:8080
而不是file://path/to/website
访问了网站,就像我一直在做的那样。然后我从上面运行load(http://localhost...)
命令。没有问题。
答案 0 :(得分:0)
Jquery ajax仅限于相同的域策略,本地文件或localhost文件,只要它与您的脚本的托管域不是同一个域,它就不起作用。
您需要在要加载文件的远程服务器上启用CORS(跨源资源共享)。