PHP / AJAX调用Python - 403 Forbidden

时间:2017-07-24 20:33:14

标签: javascript php python ajax cgi

大家好我通过我的网站调用python脚本时遇到问题,使用PHP或AJAX

我所有的东西,html,php,css和.py都在同一个文件夹/ var/www/html/

JS:

document.getElementById('print').onclick = function(){Print()};
function Print() {
var param = 'zya';
  $.ajax({
    type: 'POST',
    url: '../degaps1.py',
    data: {param: param},
    success: function(response){
      output = response;
      alert(output);
    }
  });

的Python:

degaps1.py
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/html"
print ""
arguments = cgi.FieldStorage()
print "test"

当我使用没有“../”的“url”时,它正在打印整个代码,现在我在控制台中收到一条消息... 403 Forbidden。我该怎么办才能修好它?提前谢谢!

如果我没错,警报中的输出应为“test”。

2 个答案:

答案 0 :(得分:1)

你不能像这样随时调用脚本,最多可以从中得到的只是文件的内容。你需要一台服务器......你知道......服务器端的东西,比如处理请求。

看看Flask。它是python的小型服务器,它不需要时间来设置它,一旦你设置它,你可以通过Javascript调用你的脚本。您还可以寻找其他解决方案,但我记得当我需要使用Python而不是PHP时,Flask是我的救星!

答案 1 :(得分:0)

最后我得到了它的工作!我在conf.modules.d / apache.conf和conf.d / vhost.conf上的配置设置得很好,文件路径正确...但主文件conf / httpd.conf有所有设置错了,我把它们全部改了,终于工作了! :d

vhost.conf

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName test
  ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
  ErrorLog /var/www/html/logs/errors.log
  CustomLog /var/www/html/logs/access.log combined
  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>
</VirtualHost>

的apache.conf

DocumentRoot "/var/www/html"

<IfModule prefork.c>
    StartServers        5
    MinSpareServers     20
    MaxSpareServers     40
    MaxRequestWorkers   256
    MaxConnectionsPerChild 5500
</IfModule>

的httpd.conf

Include conf.modules.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

.py文件位于/var/www/cgi-bin/file.py

#!/usr/bin/python
print "Content-type: text/html\n\n";
print "Hello World.\n";

而ajax是:

$.ajax({
  type: 'POST',
  url: '../cgi-bin/file.py',
  data: {param: param},
  success: function(response){
    output = response;
    alert(output);
  }
});

The output is: alert >> Hello World!

可能存在一些不完整之处,但它现在有效:D