2016-09-21 3 views
0

ブラウザのアドレスフィールドからサーバーにアクセスすると、サーバーが正常に応答します。 しかし、私は私のsend.jsスクリプトからアクセスしようとすると:CORS:ブラウザまたはブラウザ内のURLにアクセスするとポリシーが異なる

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からアクセス:

<!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'ヘッダーが存在しません。 Origin 'http://192.168.0.101:8080'はアクセスできません。

私はローカルホストされたスクリプトを介してアクセスするときからブラウザのアドレスフィールドから直接ページにアクセスするとCORSポリシーが異なるのはなぜですか?リクエストに指定するフィールドがいくつかありませんか?

答えて

2

アドレスバーを使用してスクリプトに直接アクセスすると、クロスオリジンリソースの共有は行われません。お使いのブラウザはmyserver.comに移動しましたので、myserver.comへのリクエストはすべて同じ出身です。

ブラウザの場所がhttp://192.168.0.101:8080の場合、ブラウザの場所がhttp要求を行っている場所と異なるため、myserver.comへのリクエストはクロスオリジンです。

バックエンドでCORSを有効にするか、JSONPを使用する必要があります。

関連する問題