簡體   English   中英

在某些情況下沒有“ Access-Control-Allow-Origin”標頭錯誤,但在其他情況下則沒有

[英]No 'Access-Control-Allow-Origin' header error in some cases, but not in others

我知道對此已經有很多疑問。 我看着大多數。 服務器必須返回帶有所述標頭的響應,以允許我的源對其進行請求。

但是,有些事情我不理解。 我正在創建一個簡單的Stash插件,並在單擊按鈕時執行發布請求。

我有那個錯誤。 好。 但是為什么郵寄要求有效? 帖子是要啟動構建,然后啟動構建。 我仍然有錯誤,因此在客戶端,我顯示一條消息,指出該構建未啟動...

甚至更陌生,我有一個同事做了一個簡單的Chrome擴展程序,做了同樣的事情,並且錯誤未顯示在瀏覽器控制台中...

我想了解為什么我的失敗和他的成功。

我的Stash插件JavaScript代碼:

require(['jquery', 'stash/api/util/state'], function ($, pageState) {
var url = "https://build.company.org:8443/trigger";
var commit = pageState.getCommit();
var repo = pageState.getRepository()

$.post(
    url,
    {
        'code': '9b73fccb6c839d',
        'workflow.repourl': 'ssh://git@stash.company.org:7999/' + repo.project.key + "/" + repo.name,
        'workflow.reponame': repo.project.key + "/" + repo.name,
        'workflow.revision': commit.id,
        'workflow.user': commit.author.name,
        'workflow.message': commit.message
    },
    function (data) {
        AJS.messages.success("#launch-build-message", {
          fadeout: true,
          delay: 5000,
          title: "Success!",
          body: "The build was<br>successfully launched!"
        });
    }
).fail(function () {
    AJS.messages.error("#launch-build-message", {
        fadeout: true,
        delay: 5000,
        title: "Error!",
        body: "The build could not<br>be launched!"
    });
});
});

他的Chrome擴展程序javascript:

var build_status_div = $('div.build-status-summary');

var rebuild_div = $('<div class="plugin-item"></div>').insertAfter(build_status_div);
var rebuild_a = rebuild_div.append('<a href=""><span class="aui-icon aui-icon-small aui-iconfont-build" title="Launch another build"></span><span class="label">Launch another build</span></a>');
var success_div = $('<div class="plugin-item build-result build-success"><span>Build started !</span></div>').insertAfter(rebuild_div);
var failure_div = $('<div class="plugin-item build-result build-failure"><span>Could not start the build.</span></div>').insertAfter(success_div);
success_div.hide();
failure_div.hide();

rebuild_a.click(function(ev) {
ev.preventDefault();

$.post(
    'https://build.company.org:8443/trigger',
    {
        'code': '9b73fccb6c839d',
        'property:workflow.repourl': 'ssh://git@stash.company.org:7999/Project_1/Rep_1,
        'property:workflow.reponame': 'Project_1/Rep_1,
        'property:workflow.revision': 'dbc5de00a675996df25cebb6c3cce7fad39247b9',
        'workflow.user': 'Some User',
        'workflow.message': 'test'
    },
    function (data) {
        success_div.fadeIn().delay(5000).fadeOut();
    }
).fail(function () {
    failure_div.fadeIn().delay(5000).fadeOut();
});
});

我有一個同事做了一個簡單的Chrome擴展程序

Chrome擴展程序是明確安裝在瀏覽器中的軟件。 他們被授予從其他網站讀取數據的權限。

您訪問的任意頁面上的JavaScript的訪問權限都受到限制。 如果要使用XMLHttpRequest訪問另一個來源,則該來源必須使用CORS授予您的站點權限。

暫無
暫無

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

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