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

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文件,但是到浏览器上就报这个错:

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

相关阅读:

React初学关于组件数据传递方面的一点疑惑?

网页分享到微信

webpack打包时postcss-px2rem为什么不能解析vue模板内的sass?

vue 2.0 的入门和文档从哪里看?

如何查看图片的 gof大小?

IOS七牛上传错误码-2是什么意思啊,每次上传都出这样的错误

如何获取滚动按钮到底部的距离

数据库字段命名问题,新人,求解

Windows Flask服务器程序关闭了之后,端口仍然偶尔出现处于监听状态

写代码时变量、函数的命名总是在为后续维护的人考虑 肿莫破....

如图,java 在判断的时候,既然不等于null,为什么还要判断size大于0?不等于null肯定大于0呀?

Android WebView中的Ajax操作能统一使用WebView设置的header吗?

如何等距离排列div?

关于node bluebird promise then 的使用

vue有封装了get和post方法吗?是jq的$.get()这个,不是匹配路由

git add . 了,发现里面有一个不想要提交的文件夹,怎么移除add的目录?

微信开发上传图文消息内的图片(只返回图片URL),报错41005 缺少多媒体文件数据?(已解决)

webpack2 css打包问题

echarts怎么去掉坐标线条吗?

请问这题如何解?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值