首先,服務器(不是我)跨域請求返回以下標題:製作與認證頭
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
我試圖找出如何請求傳遞給現場與認證令牌。我在本地的apache服務器上運行代碼。
這是我的代碼:
function get_data(){
var url = '$URL';
var x = new XMLHttpRequest();
x.open("GET", url, true)
if (x.readyState == 4 && x.status == 200) {
var responseText = x.responseText;
console.log(responseText)
};
x.setRequestHeader("Authentication", "Bearer $TOKEN");
x.withCredentials = true
x.send()
}
控制檯回報:
的XMLHttpRequest無法加載$ URL。對預檢請求的響應不通過 傳遞訪問控制檢查:否請求的資源上存在「訪問控制 - 允許來源」標頭爲 。 Origin'http://localhost'是 因此不允許訪問。該響應的HTTP狀態代碼403.
在閱讀文檔時,我看到它不允許手動設置標題。當我刪除x.setRequestHeader("Authentication", "Bearer $TOKEN");
時,我確實從服務器獲得了一個答案(很明顯是一個驗證錯誤)。那麼我怎麼會將這些信息添加到我的請求中呢?
服務器返回的標題:
Request URL:$serverurl
Request Method:OPTIONS
Status Code:403 Forbidden
Remote Address:$ipaddress
Response Headers
view source
Cache-Control:no-cache
Connection:close
Content-Type:text/html
Request Headers
view source
Accept:"*/*"
Accept-Encoding:gzip, deflate, sdch
Accept-Language:nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
Access-Control-Request-Headers:authentication
Access-Control-Request-Method:GET
Connection:keep-alive
Host:$host
Origin:http://localhost
Referer:http://localhost/mv.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36
請解釋「$ URL」的含義。這是真正的服務器網址的令牌或佔位符嗎? – Roberto
同樣'$ TOKEN' - –
爲了保護隱私,我在此替換了url和token,它們被正確放置在我的代碼中。對於它的價值,我用Python編寫了完全相同的腳本,沒有任何問題。 – wasmachien