2

我想訂閱與下面的HTTP POST請求的火力點雲消息傳遞主題:XMLHttpRequest的響應:預檢要求未通過訪問控制檢查:

var data = null; 

var xhr = new XMLHttpRequest(); 
xhr.withCredentials = true; 

xhr.addEventListener("readystatechange", function() { 
    if (this.readyState === 4) { 
    console.log(this.responseText); 
    } 
}); 

xhr.open("POST", "https://iid.googleapis.com/iid/v1/etLaB36oW1w...nyO_Zc26ZPOFTeNuf58-l6uSoJ9Xs1JRYKfqxsmKkdrR-oX4tQsuS_z5C0/rel/topics/Byfjordskole"); 
xhr.setRequestHeader("authorization", "key=AAAABlxTfxY:APA91bGE3sa09zq...dZSIVJul3N-y1hMJqAoKngwjC_El3rEuH4_-S2gOxKcdAF67HHhGK7pAWJrhyt8JthJGm_QN6JdXTBow62nYodgFvLncfSniwtBinBgIPLaKpT"); 
xhr.setRequestHeader("content-type", "application/json"); 
xhr.setRequestHeader("cache-control", "no-cache"); 
xhr.setRequestHeader("postman-token", "a3ce72a5-f8ba-99e4-59d6-fe3295b84f6e"); 

xhr.send(data); 

這工作,當我用郵差,但我收到以下錯誤消息時,我嘗試使用相同的代碼在我的JavaScript應用程序:

XMLHttpRequest cannot load https://iid.googleapis.com/iid/v1/eOEiRqvhD4s:APA91bFFb-uP-Xhf2iD-ALUI_X4M7…gA_YgQgmuib7cCL7UuSdlhUUWmsqwRnkcO2kpAIV_H-_xBPlPd/rel/topics/Eiganesskole. 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'https://sk......e.top' is therefore not allowed access. 

不要火力雲消息抑制我從使這一類型的要求,或者是有這個問題的解決方案?任何幫助將不勝感激。

+0

另一個堆棧溢出線程解決了我的問題[鏈接](http://stackoverflow.com/a/2067584/6177181)。我的解決方案是將上面的代碼封裝在我的index.html文件的腳本標記中(爲了避免訪問控制允許原始錯誤)。 –

回答

0

請務必回答這個問題。提供詳情並分享您的研究成果!

這堆棧溢出答案解決我的問題:https://stackoverflow.com/a/2067584/6177181

這個問題是瀏覽器安全有關的:這讓我從做跨域請求。解決方案是將我的代碼封裝在腳本標記中以避免此限制。因此,而不是做從另一個javascript文件這一要求,我只是簡單地添加請求的代碼在這樣的index.html文件:

<script> 
function subscribe(currentToken){ 
"use strict" 
    let stored_topics = localStorage.getItem("topicsList"); 
    let topics = JSON.parse(stored_topics); 
    for (let i = 0; i < topics.length; i++){ 
    let data = null; 
    let xhr = new XMLHttpRequest(); 
    xhr.addEventListener("readystatechange", function() { 
    if (this.readyState === 4) { 
     console.log(this.responseText); 
    } 
    }); 
    let body = {}; 
    let url = "https://iid.googleapis.com/iid/v1/"+currentToken+"/rel/topics/"+topics[i]; 
    xhr.open("POST", url); 
    xhr.setRequestHeader("authorization", "key=AAAABlxTfxY:....QAVfBJI8J0RdZSIVJul3N-y1hMJqAoKngwjC_El3rEuH4_-S2gOxKcdAF67HHhGK....2nYodgFvLncfSniwtBinBgIPLaKpT"); 
    xhr.setRequestHeader("content-type", "application/json"); 
    xhr.send(data); 
    } 
    } 
</script> 

(該currentToken從火力點雲消息API要求在同一文件(指數的.html))。 請按照此鏈接上的說明進行操作:https://firebase.google.com/docs/cloud-messaging/js/receive瞭解有關Firebase雲消息傳遞的信息。

相關問題