2017-07-24 83 views
0

好傢伙我在通過我的網站調用一個python腳本的問題,無論是使用PHP或AJAXPHP/AJAX調用Python - 403個禁止

所有我的東西,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。我能做些什麼來解決它?提前致謝!

如果我沒有錯,警報中的輸出應該是「測試」。

+0

是您的服務器配置爲運行CGI腳本?默認情況下,請求一個Python文件只是爲了獲取該文件的內容。 請參閱:https://docs.python.org/2/library/cgi.html#installing-your-cgi-script-on-a-unix-system – JHS

回答

1

你不能只是像這樣調用腳本,至多你能從中得到的只是文件的內容。你需要一個服務器來做......你知道......服務器端的東西就像處理請求一樣。請參閱Flask。這是一個用於python的小型服務器,它不需要任何時間來設置它,一旦你設置了它,你就可以通過Javascript調用你的腳本。您還可以尋找其他解決方案,但我記得當我需要使用Python而不是PHP時,Flask就是我的救星!

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