Python IIS7 上 AngularJS 应用的 server-side 脚本
Python script as server-side for AngularJS app on IIS7
我有显示播放器图像的指令。我将播放器 ID 发送到小 Python 脚本,以通过 ajax 调用检查是否存在具有此类 ID 的图像。如果图像存在,我需要 return 它的名字。
我成功地将 id 从 fronted 发送到脚本并找到了图像名称。问题是我无法正确 return 文件名。我收到错误:
HTTP 错误 502.2 - 网关错误
指定的 CGI 应用程序因未 return 完整的 HTTP headers 集而行为异常。 headers 它 return 是 "HCP_23108_SmithKen.png ".
如果我添加 headers,我仍然会收到错误消息:
HTTP 错误 502.2 - 网关错误
指定的 CGI 应用程序因未 return 完整的 HTTP headers 集而行为异常。 headers 它 return 是 "Content-type: text/html; charset=utf-8 HCP_23108_SmithKen.png ".
我确实按照 Python on IIS: how?
在 IIS7 的处理程序映射中启用了 cgi
我的问题是如何在没有任何 Python 框架的情况下正确执行 Ajax GET 请求?谢谢
指令:
myDirectives.directive('headshot', function ($http) {
return {
restrict: 'AE',
scope: {
lastProID: '@lastproid'
},
template: '<img ng-src="{{proImg}}" class="headshot">',
link: function (scope, element, attrs) {
//scope.id = scope.lastProID;
attrs.$observe('lastproid', function (id) {
scope.id = id;
var src = 'img/bios/nophoto.png';
scope.proImg = (src);
var url = 'bioPhoto/bioPhoto.py';
$http.get(
url,
{
params: {'id': scope.id}
})
.success(function (data) {
var src = 'img/bios/' + data;
scope.proImg = (src);
})
.error(function (error) {
});
});
}
};
});
bioPhoto.py 脚本:
import fnmatch
import os
rootPath = './img/bios/'
query_string=os.environ["QUERY_STRING"]
id=query_string.split("id=",1)[1]
id=id.strip()
pattern = "*" + id + "*"
print ('Content-type: text/html; charset=utf-8')
for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, pattern):
filename=filename.strip()
print(filename)
您的 headers 后需要一个空行。
(参见:http://www.oreilly.com/openbook/cgi/ch03_02.html)
试试这个:
print ('Content-type: text/html; charset=utf-8\n\n')
我有显示播放器图像的指令。我将播放器 ID 发送到小 Python 脚本,以通过 ajax 调用检查是否存在具有此类 ID 的图像。如果图像存在,我需要 return 它的名字。
我成功地将 id 从 fronted 发送到脚本并找到了图像名称。问题是我无法正确 return 文件名。我收到错误:
HTTP 错误 502.2 - 网关错误 指定的 CGI 应用程序因未 return 完整的 HTTP headers 集而行为异常。 headers 它 return 是 "HCP_23108_SmithKen.png ".
如果我添加 headers,我仍然会收到错误消息:
HTTP 错误 502.2 - 网关错误 指定的 CGI 应用程序因未 return 完整的 HTTP headers 集而行为异常。 headers 它 return 是 "Content-type: text/html; charset=utf-8 HCP_23108_SmithKen.png ".
我确实按照 Python on IIS: how?
在 IIS7 的处理程序映射中启用了 cgi我的问题是如何在没有任何 Python 框架的情况下正确执行 Ajax GET 请求?谢谢
指令:
myDirectives.directive('headshot', function ($http) {
return {
restrict: 'AE',
scope: {
lastProID: '@lastproid'
},
template: '<img ng-src="{{proImg}}" class="headshot">',
link: function (scope, element, attrs) {
//scope.id = scope.lastProID;
attrs.$observe('lastproid', function (id) {
scope.id = id;
var src = 'img/bios/nophoto.png';
scope.proImg = (src);
var url = 'bioPhoto/bioPhoto.py';
$http.get(
url,
{
params: {'id': scope.id}
})
.success(function (data) {
var src = 'img/bios/' + data;
scope.proImg = (src);
})
.error(function (error) {
});
});
}
};
});
bioPhoto.py 脚本:
import fnmatch
import os
rootPath = './img/bios/'
query_string=os.environ["QUERY_STRING"]
id=query_string.split("id=",1)[1]
id=id.strip()
pattern = "*" + id + "*"
print ('Content-type: text/html; charset=utf-8')
for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, pattern):
filename=filename.strip()
print(filename)
您的 headers 后需要一个空行。 (参见:http://www.oreilly.com/openbook/cgi/ch03_02.html)
试试这个:
print ('Content-type: text/html; charset=utf-8\n\n')