簡體   English   中英

如何將 CORS 標頭從普通 CGI/Python 發送到前端

[英]How To Send CORS Headers From Plain CGI/Python to Frontend

我有一個在 localhost:4200 上運行的 Angular 前端,它有一個 http.post 調用,如下所示:

let headers = new HttpHeaders();
headers.append('Content-Type', 'application/json');

return this.http.post<[]>('https://localhost/backend.py',new HttpParams().set("parameter1","4").set("parameter2","2022"));

然后我的python文件是這樣的,運行在Apache,即localhost:80:

#!/usr/bin/python
(import statements)

print("Access-Control-Allow-Origin: *")
print("Access-Control-Allow-Methods: POST, GET, OPTIONS")
print("Content-Type: text/html\n")

(rest of script)

Angular 不斷拋出 CORS 錯誤。 我嘗試像上面那樣打印它們,因為這是許多谷歌搜索指示要做的,但它不起作用,Angular 不斷拋出錯誤。

在 php 中,您通常只需 output 文件開頭的標題即可,但我不知道在這里做什么。 我可以通過搜索找到的大部分內容都是針對 flask/Django/etc 的,而不是普通的 python 文件。

我可能忽略了一些簡單的事情。

由於您用“cgi”標記了您的問題,我假設您使用的是 cgi.py 庫,順便說一下,關於該庫,文檔說,“自 3.11 版以來已棄用,將在 3.13 版中刪除”

所以,這真的不再受支持了——你可能想考慮使用一個實際的 python web 框架。 此外,這與 Angular 完全無關,因此我從您的問題中刪除了該標簽並編輯了您的標題。

無論如何,文檔還說你需要在標題和內容的 rest 之間有一個空行,所以你可能想要:

#!/usr/bin/python
(import statements)

print("Access-Control-Allow-Origin: *")
print("Access-Control-Allow-Methods: POST, GET, OPTIONS")
print("Content-Type: text/html\n")
print() # add this

(rest of script)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM