我有一個以nginx+uwsgi+flask架設的Web API服務,但是在網頁呼叫該API時,瀏覽器出現了CORS跨網域錯誤。
這是瀏覽器為了安全性而設置的規則,我找到兩個方案:一個以flask來設置;另一個以nginx來設定。
flask方案(因為我用nginx架設服務,所以我不確定該方式是否有效的):
1、安裝 flask_cors 套件:pip install flask_cors
2、程式如下:
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route("/")
def helloWorld():
return "Hello!"
nginx方案(我用此方案):
在設定檔nginx.conf的每個區段加入下列語法:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
程式範例如下:
location /ft-prtg {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
default_type "text/html";
alias /test/html/test_FT.html;
}
重啟nginx之後,在瀏覽器的開發工具檢示其結果如下,已加在Header上了。