2013-11-28 150 views
0

在索引頁上,我創建了一個表單(不是HTML,但是通過JavaScript),並將其包含在一個函數中,該函數在特定條件之後被調用。下面是JavaScript代碼:如果通過JavaScript訪問文件,訪問被禁止(403)

function next_page() 
{ 
var card="Some values ab,xy"; 
var form = document.createElement("form"); 
    input = document.createElement("input"); 

form.action = "preview_card.php"; 
form.method = "post" 

input.name = "card_data"; 
input.value = card; 
form.appendChild(input); 
document.body.appendChild(form); 
form.submit(); 
} 

但問題是,當函數被調用時顯示「禁止」消息:

故宮

您沒有權限訪問/preview_card.php在這臺服務器上。

此外,在嘗試 使用ErrorDocument來處理請求時遇到404未找到錯誤。

但如果我直接轉到preview_card.php,頁面顯示。

爲什麼當JS文件調用文件時禁止訪問,但如果我直接將鏈接輸入到瀏覽器,它就會顯示出來。

+0

請確保'preview_card.php'與您的索引文件在同一目錄中。 –

+0

它在同一個目錄 –

+0

在這種情況下檢查你的'error_log'以獲得更多的錯誤細節。 –

回答

0

似乎你的服務器拒絕ajax(X-Requested-With)請求。嘗試在服務器端設置訪問控制 - 允許標題:X-Requested-With,內容類型標頭。

順便說一句 - 爲什麼你不使用jQuery?

$.post(
    '/preview_card.php', 
    { 
     card_data: "Some values ab, xy" 
    }, 
    function (data) { 
     console.log(data); 
     /* some actions with response here */ 
    } 
); 
0

也許preview_card.php接受當前沒有POST請求。在常規情況下,如果您在地址欄中輸入網址,則瀏覽器會執行GET請求。嘗試將您的form.method更改爲"get"

+0

但代碼在本地服務器上工作,如果我把它放在遠程服務器上,我得到的問題,但無論如何,我也會嘗試GET方法 –

+0

我也嘗試使用GET,但它給了我同樣的錯誤,它似乎是沒有太多關於變量傳遞,但更多關於一些.htaccess配置文件 –