2016-09-21 61 views
0

內URL如果我的權利,通過瀏覽器的地址欄來訪問服務器,服務器成功響應。 但當我嘗試從我send.js訪問它腳本:CORS:策略不同,如果從瀏覽器或訪問腳本

var request = new XMLHttpRequest(); 
request.open('GET', "myserver.com", true); 
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8;"); 
request.onreadystatechange = function() 
{ 
    document.write("received response: " + request.response); 
}; 
document.write("sending request ..."); 
request.send('login=billy&password=sunshines'); 

用瀏覽器訪問它通過的index.html在貓鼬本地Web服務器:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Server send script TEST</title> 
</head> 
<body> 
<script src="send.js"></script> 
</body> 

它失敗,錯誤:否請求的資源上存在「Access-Control-Allow-Origin」標頭。因此,'http://192.168.0.101:8080'不允許訪問。

爲什麼CORS當我直接訪問網頁通過瀏覽器的地址欄中,從當我通過本地託管腳本訪問策略不同?我是否缺少一些字段來指定請求?

回答

2

當您直接通過地址欄訪問腳本沒有跨源資源共享的發生。您的瀏覽器導航到myserver.com所以myserver.com任何要求是相同的起源。

當您的瀏覽器位置是http://192.168.0.101:8080時,對於myserver.com的請求是跨源,因爲您的瀏覽器位置與您發出http請求的位置不同。

您必須啓用後端CORS或使用JSONP。