我无法将 ajax 调用与 ExpressJS 中的其他调用区分开来。
据我了解,我可以request.accepts('json')
用来识别一个json请求吗?
问题是 - 显然,每个电话都接受一切!
app.get( '*', function(request, response, next ) {
console.log('request accepts:')
if( request.accepts( 'json' ) ){
console.log( '--> accepts json' )
}
if( request.accepts( 'html' ) ){
console.log( '--> accepts html' )
}
if( request.accepts( 'blah' ) ){
console.log( '--> accepts blah' ) // this does not show up
}
if( request.accepts( 'application/json' ) ){
console.log( '--> accepts json2' )
}
next()
} )
如果我只是访问该页面,它接受 json 和 html。
如果我尝试使用$.getJSON( ... url ... )
,它也接受 json 和 html。
Headers:
Browser: "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
Ajax: "Accept application/json, text/javascript, */*; q=0.01"
我不是关于接受标头的专家,但似乎这*/*
部分可能是问题所在。
如何确定 ExpressJS 中的正确(或者可能是第一个)接受类型?或者:如何区分 JSON 请求和正常的页面访问?