簡體   English   中英

錯誤:不存在“ Access-Control-Allow-Origin”標頭。 即使我添加了它

[英]Error: No 'Access-Control-Allow-Origin' header is present. Even though I have added it

我在Unity中構建應用程序並導出到HTML5。 當我嘗試發出簡單的GET請求時,出現此錯誤:

通過CORS策略阻止了對來自源“ http://anothersite.co.uk ”的“ http://example.co.uk/request.php?foo=bar ”處的XMLHttpRequest的訪問:沒有“允許訪問控制” -Origin'標頭出現在請求的資源上。

我在論壇上看到過很多問題問這個,人們給出了這樣的回答(正如我對它們的解釋):

  1. 您請求的服務器/站點應該設置標頭,以接受您請求的特定域,或者將其設置為通配符

  2. 在瀏覽器中禁用網絡安全

  3. 使用代理,例如https://cors-anywhere.herokuapp.com

第一個對我來說很有意義,但是我已經在服務器端嘗試了以下操作,但無濟於事:

  1. 在.htaccess文件中設置標題。 如標頭集訪問控制允許來源“ *”

  2. 在“請求” php文件中設置標題:header('Access-Control-Allow-Origin: http : //anothersite.co.uk '); (我也嘗試過“ *”)

  3. 我嘗試在Unity代碼中的“ anothersite.co.uk”請求中發送標頭。

  4. 我通過將URL傳遞給https://cors-anywhere.herokuapp.com來嘗試人們的建議,但這根本沒有用,也許我誤會了它。 我真的不喜歡這樣作為解決方案..使得整個事情顯得毫無意義。

任何提示都將真正有幫助,對不起,如果我對整個事情都沒有理解,我感到很抱歉,但是我無法做出正確的決定。

在此先感謝您的幫助! :)

我使用以下PHP代碼的版本來提供數據,它似乎可以正常工作。

if (isset($_SERVER['HTTP_ORIGIN'])) {
    // Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
    // you want to allow, and if so:
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        // may also be using PUT, PATCH, HEAD etc
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
}

暫無
暫無

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

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