簡體   English   中英

使用 Ajax 向 http 請求添加 CORS 標頭

[英]Add CORS header to an http request using Ajax

我開發了一個 Restfull 應用程序,我想添加另一個 Web 應用程序來使用它的服務,所以我進行了這個 Ajax 調用:

 $.ajax({
            type: "Post",
            async: false,
            url: "ip_adress/Inviter/api/Account/Register",
            data: donne,
            headers: {  "Access-Control-Allow-Origin:": "*"},
            success: function (data) {
                console.log(data);
                var tab = [];
                tab["username"] = username;
                tab["password"] = pwd;
                var isLogged = Login.CheckCredential(tab, username);
                return isLogged;
            },
            error: function (xhr, status, error) {
                console.log(xhr);
                console.log(status);
                console.log(error);
            }

        });

我得到這個例外:

對象 {readyState: 0, status: 0, statusText: "SyntaxError: Failed to execute 'setRequestHeader' …-Origin: ' is not a valid HTTP header field name."} error DOMException: Failed to execute 'setRequestHeader' on 'XMLHttpRequest' : 'Access-Control-Allow-Origin: ' 不是有效的 HTTP 標頭字段名稱。

所以我需要知道:

  • 在這種情況下如何啟用 CORS?

  • 我該如何修復我的代碼?

你不能這樣授權自己。 這是一個響應頭; 規范中的詳細信息。 您向其發送請求的服務器必須將該標頭發送回,以便讓瀏覽器知道允許您的頁面向該服務器發送 ajax 請求是可以的。 如果您嘗試請求的服務器不允許您的源,則您無法在客戶端代碼中執行任何操作。

不知何故,我重定向到這個問題以獲得我的 Flask 應用程序的解決方案。 由於服務器必須將響應發送回標頭,因此必須在服務器端設置 CORS。 就我而言,我試圖從

客戶端http://127.0.0.1:8081/

服務器http://127.0.0.1:5051

所以我設置了 cors 策略以允許源在客戶端

headers: {  "Access-Control-Allow-Origin:": "*"},

對於服務器端,flask 提供了允許 cors 的庫

from flask_cors import CORS
app = Flask(__name__)

CORS(app)

它實際上解決了這個問題

暫無
暫無

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

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