2017-02-08 16 views
0

関連questionCORS要求が拒否されるのはなぜですか?

私はテスト目的でAPIにPOSTリクエストを送信しようとしています。私は続ける

プリフライト要求に対する応答はアクセス制御チェックに合格しません:要求されたリソースに「アクセス制御許可の原点」ヘッダーが存在しません。したがって、Origin '{私のローカルIP}'はアクセスが許可されていません。私は問題は彼らと一緒ではありません知っているので、私は、要求URLと引数を省略

function searchSimilar2(){ 
var base_url = "{request url}" 
var send_url = base_url + "{inline arguments}" 
var params = '{"size":10, "mediaUrl":"https://cdn.yoox.biz/39/39706632kh_20_f.jpg2"}' 

function func(){ 
    console.log(this.response) 
} 

var hReq = new XMLHttpRequest(); 
hReq.open('POST', send_url) 
hReq.setRequestHeader('Content-Type', 'application/json') 
hReq.onload = func; 
hReq.send(params) 

:応答はここでHTTPステータスコード403

を持っていた関連するコードです。

リンクされた質問の回答ごとに、私はJQueryを使用していません。Python SimpleHTTPServerを実行しています。ここから、このリクエストを送信しています。私はこのエラーが発生し続ける。

+0

サーバーが必要なCORSヘッダーを返送していません。あなたのページを 'file://' URLで読み込んでいますか?その場合、ブラウザはページと 'http:// localhost'サーバを2つの異なるドメインと見なします。 – Pointy

+0

はい、私はリンクされた質問でそれを読んでいます。そのため、私はsimpleHTTPServerを実行しており、そこからjavascriptを実行するhtmlファイルを開きます。 – GreySage

+0

ブラウザーが関係する限り、 "http"部分( "http"または "https")、ドメイン**の文字(文字**)、およびポート番号が一致する必要があることを理解してください。同じIPアドレスだけでなく、文字列と比較しても同じでなければなりません。 – Pointy

答えて

0

をサーバーの設定を変更することにより、私はこれが動作するようになりました。

リクエストのURLの一部が「v1/api」で、何らかの理由で「api/v1」に切り替えるとすべてが機能します。

2

SimpleHttpServer応答に "Access-Control-Allow-Origin"ヘッダー値を設定する必要があります。ヘッダー値には、要求しているアプリケーションのホスト名またはIPが含まれている必要があります。また、あなたはすべての起源を許可するように「*」ワイルドカード値を設定することができます。

//allow single origin 
self.send_header('Access-Control-Allow-Origin', 'http://yourapp.com') 
self.end_headers() 

-OR-

//allow all origins 
self.send_header('Access-Control-Allow-Origin', '*') 
self.end_headers() 
関連する問題