2014-12-03 32 views
0

我知道這方面已經有很多問題了。我看了他們大部分。服務器必須返回帶有所述標題的響應,從而允許我的源對其做出請求。在某些情況下,沒有「訪問控制 - 允許來源」標頭錯誤,但在其他情況下不存在

但是,有一些我不明白。我正在創建一個簡單的Stash插件,當點擊一個按鈕時發出發佈請求。

我有這個錯誤。好。但是,爲什麼要求發佈工作?該職位是發起一個構建和構建啓動。我仍然有錯誤,所以在客戶端,我顯示一條消息說,構建未啓動...

即使是陌生人,我有一個同事做了一個簡單的Chrome擴展做同樣的事情和錯誤沒有顯示在瀏覽器控制檯中...

我想了解爲什麼我的失敗和他的成功。

我的藏匿插件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://[email protected]: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://[email protected]: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(); 
}); 
}); 
+0

擴展通過與通過網頁傳遞的代碼不同的規則進行播放。 – Pointy 2014-12-03 20:24:37

回答

1

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

Chrome擴充顯式安裝到瀏覽器中的一些軟件。他們被授予從其他網站讀取數據的權限。

訪問您訪問的任意頁面上的JavaScript會受到更多限制。如果您想使用XMLHttpRequest訪問另一個源,那麼該源必須使用CORS來授予您的網站權限。

相關問題