nginx读取本地html文件,nginx加载本地静态文件html内ajax请求动态url转发到node拿到本地json文件后无法在浏览器端显示。...

老大让我搞一个前后端分离方案,我就想到了用nginx加载静态html资源,动态url请求转发到nodejs处理,完事后发现nodejs可以拿到本地的json文件但是无法输出到浏览器,而且第一次是成功了的,过了一段时间再来跑一遍就发现浏览器无法跨域拿到文件了,搞不懂以前可以怎么现在不可以了???

我的html代码:

前后端分离测试

1.jpg

var host = 'http://localhost:8000';

$('#img').click(function(){

$.ajax({

url : host + "/src/word.json",

type : 'post',

data : {},

dataType : 'json',

success : function(res){

var res = JSON.stringify(res)

$('body').append('成功获取数据!'+res+'')

}

})

})

我的nginx配置:

server {

listen 8000;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {

root "D:/Program Files/nodejs/app/qianHouDuanFenLi";

index index.html index.htm;

expires -1;

}

location ~/src/.* {

proxy_pass http://127.0.0.1:3000;

}

ajax请求url为8000端口的资源,nginx收到请求后转发现符合/src/规则便转发请求到3000端口,这时候就交给nodejs处理,node代码如下:

var http = require('http');

var url = require('url');

var router = require('./router')

http.createServer(function(req,res){

if(req.url !== '/favicon.ico'){

var pathname = url.parse(req.url).pathname;

pathname = pathname.replace(/\//,'');

optname = pathname.split('/')[0];

filename = pathname.split('/')[1];

router[optname](res,filename);

}

}).listen(3000)

console.log(222)

//读取本地文件

var fs = require('fs');

module.exports = {

read_file : function(path,cb){

fs.readFile(path,function(err,data){

if(err)

console.log(err);

else

cb(data);

console.log(data);

})

console.log('读取完毕');

}

}

//输出到浏览器

var readData = require('./readData');

function getReacall(res){

function recall(data){

res.writeHead(200,{"Content-Type":"text/html"});

res.write(data);

res.end('');

}

return recall;

}

module.exports = {

src : function(res,filename){

var recall = getReacall(res);

readData.read_file('../src/'+filename,recall);

}

}

最后控制台可以输出json文件,但是到浏览器上就报这个错:

bVHfIo?w=991&h=201

这要怎么解决?不想用jsonp也不想用设置请求头有办法解决吗?第一次提问求大神解答!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值