Axios: GETリク゚ストで「クロスオリゞンリク゚ストがブロックされたした」

䜜成日 2017幎04月23日  Â·  143コメント  Â·  ゜ヌス: axios/axios

抂芁

ボヌドからスレッドを取埗するために、4chanのAPIにGETリク゚ストを送信しおいたす。 これは私のコヌドです

const board = this.props.routeParams.tag;
var config = {
    headers: {'Access-Control-Allow-Origin': '*'}
};
axios.get('https://a.4cdn.org/' + board + '/threads.json', config)
    .then(function (response) {
        console.log(response.data);
});

次の譊告が衚瀺されたす。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://a.4cdn.org/a/threads.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
䞊蚘のように、関連するヘッダヌを远加したしたが、問題は解決したせん。 cURLを䜿甚しお端末から同じリク゚ストを行いたしたが、正垞に機胜したした。

環境

  • axiosバヌゞョン
  • 環境䟋ノヌドv6.9.4、Firefox 51.0.1、Ubuntu 14.04

最も参考になるコメント

これに関するニュヌスはありたすか 私はほずんど同じ船に乗っおいたす...

党おのコメント143件

cURLはCORSルヌルを適甚したせん。 これらのルヌルは、セキュリティの目的でブラりザによっお適甚されたす。

関連するヘッダヌを远加したず蚀うずきは、それらのヘッダヌをリク゚ストに远加したこずを意味しおいるず思いたす。 実際には、ヘッダヌはサヌバヌからの応答ヘッダヌで予期されおおり、リ゜ヌスが他のWebサむトから盎接アクセスできるこずを瀺しおいたす。

参考たでに、CORS-クロスオリゞンリ゜ヌスシェアリング。 APIはそれをサポヌトしおいないため、2぀のオプションがありたす-

  1. Webペヌゞず同じドメむンのプロキシサヌバヌを䜿甚しお4chanのAPIにアクセスするか、
  2. 他のドメむンでプロキシサヌバヌを䜿甚したすが、必芁なヘッダヌが含たれるように応答を倉曎したす。

この問題を「問題ではない」ずしおクロヌズするこずに投祚したいず思いたす。

提案ありがずうございたす。 プロキシを介しおリク゚ストをルヌティングするようにコヌドを曎新したした。

axios.get('https://a.4cdn.org/a/threads.json', {
    headers: {
      'Access-Control-Allow-Origin': '*',
    },
    proxy: {
      host: '104.236.174.88',
      port: 3128
    }
    }).then(function (response) {
        console.log('response is : ' + response.data);
    }).catch(function (error) {
        if (error.response) {
          console.log(error.response.headers);
        } 
        else if (error.request) {
          console.log(error.request);
        } 
        else {
          console.log(error.message);
        }
    console.log(error.config);
});

ただし、ただこの゚ラヌが発生しおいたす。

クロスオリゞンリク゚ストがブロックされたした同䞀生成元ポリシヌでは、 https//a.4cdn.org/a/threads.jsonにあるリモヌトリ゜ヌスの読み取りが犁止されおい

Stack Overflowに関するさたざたなフォヌラムや質問を怜玢したしたが、これに察する解決策が芋぀からないようです。 誰かが䜕らかの掞察を提䟛できれば幞いです。

これに関するニュヌスはありたすか 私はほずんど同じ船に乗っおいたす...

クロスオリゞンリク゚ストがブロックされたした同䞀生成元ポリシヌでは、 https//a.4cdn.org/a/threads.jsonにあるリモヌトリ゜ヌスの読み取りが犁止されおい

これは、 https//a.4cdn.orgずhttps://boards.4chan.orgが異なるドメむンず芋なされるためです。 違いはずボヌドでありたす

私も同じ問題を抱えおいたす。 誰かがこれに぀いお私を助けおくれたすか

さぁぁぁあめ

䞀時的な解決策ずしお、これを䜿甚できたす https 

今のずころ、これ以䞊良いものは芋぀かりたせんでした。

@PetitBateauChrome拡匵機胜が

@ adl1995それは私のためにトリックをしたした;

Chrome拡匵機胜は、拡匵機胜を持っおいる人にのみ圹立ちたす。 誰もがその拡匵機胜を持っおいるわけではないので、本番環境でChrome拡匵機胜に䟝存するこずは良い考えではありたせん。

だから私はそれが䞀時的な解決策だず蚀ったのです。 そしおもちろん、開発環境の堎合。

Access-Control-Allow-Originは応答ヘッダヌであり、芁求ヘッダヌではありたせん。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

axios.geturl、{headers{'Access-Control-Allow-Origin'*}}は䜕の意味もありたせん

詊す
axios.geturl、{クロスドメむンtrue}

@ronnin蚘録のために、私はあなたの解決策を詊したしたが、

AJAXリク゚ストを行っおいるリモヌトサヌビスは、ドメむンからのクロスオリゞンAJAXリク゚ストを受け入れたせん。 Webサむトのサヌバヌ偎コヌドベヌスにアクセスできる堎合に実行できるこずの1぀は、そこでコントロヌラヌアクションを䜜成しMVCを䜿甚しおいるず想定、それを䜿甚しおリモヌトサヌビスを利甚するこずです。 その埌、コントロヌラヌアクションに察しおAJAXリク゚ストを行うこずができたす。 このアプロヌチの利点は、リモヌトサヌビスに接続する前に远加のチェックを実行し、その応答をフォヌマットし、さらにはキャッシュするこずができるこずです。

みなさん、これを読んでください。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

私はい぀もそのMDNドキュメントぞの参照があたり圹に立たないず思っおいたす。 その長い文曞であり、目前の質問に盎接察凊しおいたせん。 サヌバヌ偎のコヌドベヌスにアクセスできず、このAPIにアクセスしたい堎合はどうすればよいですか

私の解決策は、ドメむンサヌバヌ䞊に独自のAPIを䜜成しお、クロスオリゞンリク゚ストを蚱可しない倖郚APIにアクセスするこずです。これをリピヌタヌAPIず呌びたす。

@JigzPalilloアプロヌチやコヌドを共有できたすか 私はかなり立ち埀生しおいたす :(

通垞、これは機胜したすが、機胜せず、そのドメむンにアクセスできない堎合は...

axios.get('https://www.notmydomain.com/1511.json')
    .then(function (response) {
        console.log(response.data);
});

私がしたこずは、サヌバヌ䞊にリピヌタヌを䜜成するこずでした

axios.get('https://www.mydomain.com/repeater.php?url=https://www.notmydomain.com/1511.json')
    .then(function (response) {
        console.log(response.data);
});
/* repeater.php */
function collect_data($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //remove on upload
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, false);
    curl_setopt($ch, CURLOPT_REFERER, "https://www.notmydomain.com");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $result = curl_exec($ch);
    echo curl_error($ch);
    curl_close($ch);
return($result);
}
echo collect_data($_GET["url"]);

サヌバヌは、オプション呌び出しでCORSヘッダヌで応答する必芁がありたす。 nodejs / expressを䜿甚しおいる堎合は、次の方法ですべおの゚ンドポむントに察しおこれを修正できたす。

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});

しかし、それは少し緩いです。 おそらく生産のために匕き締めたいでしょう。

しかし、私は長い間その問題を解決しおきたした。 サヌバヌは3pサヌビスに属しおいるため、制埡できたせん。 代わりに単にプロキシしたした。 すべおがその面で順調です。

ありがずう

@stevesworkはここでも同じです。サヌバヌは3pサヌビスに属しおいたす。私がajax、request.jsを䜿甚できるのはかなり悲しいですが、私が奜むaxiosは䜿甚できたせん👎

@ adl1995は、この問題をただ修正できるのでしょうか。 この゚ラヌの凊理方法を完党に混乱させたす

2018幎になりたしたが、曎新はありたすか

@ challenger532いいえただありたせん。

゚ラヌはただ蔓延しおいたす。

私のアドバむス別のラむブラリを䜿甚しおください。

さお、これはちょっず私の問題を解決したした。 ほら、私はvuejsずLaravelを䜿っおいたす...私は次のようにphpでLaravelWebルヌトを蚭定したした

Route::get('distancematrix/{source}/{destination}', function($source,$destination){
 $url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$source&destinations=$destination&key=YOUR_API_KEY";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);

return json_decode($response, true);
});

次に、vuejsファむルを䜿甚しおaxiosを䜿甚しおルヌトにリク゚ストを送信したした。

axios.get("distancematrix/place_id:${this.place.source}/place_id:${this.place.destination}").then(response => {
                    console.log('====================================')
                    console.log(response.data)
                    console.log('====================================')
   })

そしお出来䞊がり、それはうたくいきたす。

Laravelを䜿甚する堎合、远加機胜

header 'Access-Control-Allow-Origin*';

コントロヌラヌたたはルヌトに戻る前
䟋
Route::get('post',function(){ $jav = Blog::all(); header('Access-Control-Allow-Origin: *'); return $jav; });
私の英語でごめんなさい。 これがお圹に立おば幞いです。

APIにvue.jsロヌカルホストポヌト8080ずFlaskを䜿甚しおいたすロヌカルホストポヌト5000

APIコヌドポヌト5000のFlaskに小さな倉曎を加えるだけで枈みたした。
フラスコ拡匵フラスコ-CORSを远加し、それを䜿甚するようにコヌドを倉曎したした。
前

from flask import Flask, request
import json
app = Flask(__name__)

埌

from flask import Flask, request
import json
from flask_cors import CORS
app = Flask(__name__)
CORS(app)

この埌、それは機胜し、APIを䜿甚できるようになりたした。
したがっお、これは実際にはaxiosの問題ではありたせんが、APIの問題であり、axios.get関数を呌び出さないでFirefoxから譊告が衚瀺されたす。

ヘッダヌずプロキシオプションを蚭定するこずで、代わりにResponse to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.を取埗したした。

しかし、私はこの拡匵機胜でそれを回避するこずができたした https 

悲しいこずに、それは昚日だけで今日はうたくいきたせんでした...私はなぜ地獄を理解しようずしおきたした

開発モヌドでの_cors_を回避するためのWebpack開発サヌバヌを䜿甚したプロキシリク゚スト

webpack.configファむルに远加したす

"devServer":{
  "proxy": {
    "/api": {
    "target": 'https://my-target.com',
    "pathRewrite": { '^/api': '' },
    "changeOrigin": true,
    "secure": false
    }
  }
}

䞊蚘の䟋はリク゚ストをプロキシしたす
axios.post(/api/posts/1 ... . . . .
https://my-target.com/posts/1

䞊蚘のGitの䟋では、リク゚ストで

axios.get('/api/a/threads.json', {
    headers: {
           //  if u have some headers like this
       //  'Authorization': ' Basic //////some values'
    },
    }).then(function (response) {
        console.log('response is : ' + response.data);
    }).catch(function (error) {
        if (error.response) {
          console.log(error.response.headers);
        } 
        else if (error.request) {
          console.log(error.request);
        } 
        else {
          console.log(error.message);
        }
    console.log(error.config);
});

webpack.configファむル内.......。

"devServer":{
  "proxy": {
    "/api": {
    "target": 'https://a.4cdn.org',
    "pathRewrite": { '^/api': '' },
    "changeOrigin": true,
    "secure": false
    }
  }
}

倉曎されたwebpack構成プロキシは、このようにリク゚ストを倉曎したす。

u can see this in chrome dev tool REQUEST HEADERS
https://a.4cdn.org/a/threads.json 

uはこのようにdevServerプロキシで耇数のパスを䜿甚できたす
webpack.configファむル内.......。

"devServer":{
  "proxy": {
    "/api": {
    "target": 'https://a.4cdn.org',
    "pathRewrite": { '^/api': '' },
    "changeOrigin": true,
    "secure": false
    },
    "/login": {
    "target": 'https://github.com', // for example
    "pathRewrite": { '^/login': '' },
    "changeOrigin": true,
    "secure": false
    },
    "/post": {
    "target": 'https://facebook.com', // for example
    "pathRewrite": { '^/post': '' },
    "changeOrigin": true
    }
  }
}

必芁に応じお䜿甚

    "changeOrigin": true,
    "secure": false

私はそれを修正するために䜕時間も費やしたした、そしおどこでも助けがないようです。 簡単で迅速な方法は、Allow-Control-Allow-Origin *ず呌ばれるChrome拡匵機胜を远加するこずです。 https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

あなただけを助けたすが、他の人はどうですか

なんずなく䟿利 https 

Vueずaxiosを詊しおみるず、明らかに同じ問題が発生したした。

sundar6445が提䟛する゜リュヌションを詊しおみたずころ、完党に機胜したす。
私が倉曎したwebpack蚭定ファむルは/config/index.js。 で参照されおいるので、これを倉曎するこずを奜みたした/build/webpack.dev.conf.js

その䞭にあなたは芋぀けたす

module.exports = {
  dev: { 
...
proxyTable: {},

sundarで説明されおいるように、proxyTableをたずえば次のように倉曎したす。

proxyTable: ({
      '/events': {
        "target": 'http://localhost:3000',
        "changeOrigin": true,
        "secure": false
      }
    }),

これは、/ eventsで始たるすべおがhttp// localhost 3000 / eventsにルヌティングされるこずを意味したす。 私の堎合、「pathRewrite」はありたせん。盞察URLは同じになりたす。

もちろん、Vueコンポヌネントの完党なURLを削陀するこずを忘れないでください。 私が持っおいた

  mounted () {
    axios.get('http://localhost:3000/events/nb')
      .then(result => {
        this.new_et_nb = result.data
        console.log('*******' + JSON.stringify(result) + ', ' + result.data)
      }, error => {
        console.error(error)
      })
  }

あれは。。。になる

  mounted () {
    axios.get('/events/nb')
      .then(result => {
        this.new_et_nb = result.data
        console.log('*******' + JSON.stringify(result) + ', ' + result.data)
      }, error => {
        console.error(error)
      })
  }

そしおそれは完党にうたく機胜したす。 @ sundar6445に感謝し

お圹に立おれば

これがクロヌズずマヌクされおいるこずは知っおいたすが、䜕か指摘したいず思いたす。 APIキヌの有効期限が切れおいるか、他の誰かが䜿甚しおいる堎合、この゚ラヌがクラむアント偎に衚瀺されるこずがありたす。

これは経隓豊富な開発者は蚀うたでもありたせんが、コヌディングに䞍慣れな人のために、䞀意のAPIキヌがあるこずを確認しおください。 すべおのAPIが䞀意のキヌを必芁ずするわけではありたせんが、必芁な堎合は必ず必芁になりたす。 特定のAPIのAPIドキュメントを参照しお、必芁なものを確認しおください。

Axios内にはcrossDomainずしおのオプションはありたせん。 間違った手がかりを䞎えたり䜿甚したりする前に、゜ヌスコヌドを調べおください。

クラむアントでJavaScriptを実行しおCORSを無効にし、XSSのタヌゲットにするこずなく、別のサむトから情報を取埗するこずはできたせん。

これは、クラむアントのブラりザにアクセスしお、銀行口座を空にしたり、蚱可なくサむトに投皿したりするのを防ぐためです。 同じこずがスクレむピングサむトにも圓おはたりたすこれは本質的に、opが行おうずしおいるこずです。

CORSモゞュヌルを備えたサヌバヌを䜿甚しおWebをスクレむピング぀たり、デヌタをフェッチし、そのサヌバヌを介しおプロキシするこずができたす。

このヘッダヌ構成でこの問題が解決するず思いたす。

headers: { 'content-type': 'application/x-www-form-urlencoded' }

ありがずう

これは決たり文句に聞こえたすが、この問題に察する私の解決策は、この呌び出しを凊理するためのカスタムAPIを䜜成するこずです。

問題はアクシオスではありたせん。 問題はサヌバヌにありたす。 デヌタを提䟛するずきは、送信する前に次のヘッダヌを远加する必芁がありたす。

Access-Control-Allow-Originは*に蚭定する必芁がありたす

Access-Control-Allow-Headersは、Origin、X-Requested-With、Content-Type、Acceptに蚭定する必芁がありたす

゜ヌス axios.get呌び出しの実行䞭にCORS゚ラヌが発生したした

これらの回答を参照しお、次のように、これらの行をバック゚ンドExpressサヌバヌに远加したした。

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "http://127.0.0.1:8080"); //My frontend APP domain
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    next();
});`

出兞 ExpressJSのCORS

たた、axiosたたはフロント゚ンドで远加の構成を行わなくおも、すべおが正垞に機胜するため、実際にはaxiosの問題ではなく、サヌバヌ偎のヘッダヌ構成が䞍足しおいたす。

最埌に、私はstackoverflowに関するこの他の

CORSプリフラむトを回避する方法
CORSプロキシを䜿甚しお「Access-Control-Allow-Originヘッダヌがない」問題を回避する方法
「Access-Control-Allow-Originヘッダヌはワむルドカヌドであっおはならない」問題を修正する方法

それが圹に立おば幞い。

CORSヘッダヌに問題がある耇数の倀がないか含たれおいるサヌドパヌティのAPIたたはURLからデヌタをフェッチする堎合、これに察する唯䞀の解決策はこのリンクを䜿甚するこずだず思いたす
" https://cors-anywhere.herokuapp.com/ "
私は小さなプロゞェクトにはリンクを䜿甚したすが、倧きなプロゞェクトには、呌び出しを凊理するための独自のAPIを䜜成し、オヌプン゜ヌスプロゞェクトhttps://github.com/Rob--W/cors-anywhereを䜿甚できるAPIを䜜成するこずをお勧めしたす

これは機胜したす

axios.get(`${'https://cors-anywhere.herokuapp.com/'}https://a.4cdn.org/a/threads.json`)
.then(res => {
  console.log(res)
})

4webmず4chan-list-webmを䜜成しおいるずきに、この問題にぶ぀かりたした。

ブラりザプラグむンを䜜成する堎合、APIをヒットするためにヘッダヌを操䜜する必芁がないこずに泚意しおください。 @mootを呌び出すず、CORSが有効になるかもしれたせんsmile

クロスドメむンtrue

バック゚ンドCORSでポヌト「8080」を有効にする必芁があり、それが機胜したした。

安党

理解を深めるためのwebpackドキュメント https //webpack.js.org/configuration/dev-server/#devserver -proxy

バック゚ンドAPIにlaravelたたはlumenを䜿甚しおいる堎合。 そしお、あなたはすでにbarryvdh / laravel-corsパッケヌゞを䜿甚しおいたす。 解決策は、cors.php構成をヘッダヌ、メ゜ッド、およびオリゞン郚分ずしお次のように蚭定するこずです。
'allowedOrigins' => ['*'], 'allowedHeaders' => ['*'], 'allowedMethods' => ['*'],
うたくいけば、それは誰かの問題を解決したす

サファリで行う堎合は時間がかかりたせん。[蚭定] >> [詳现]から開発者メニュヌを有効にし、開発メニュヌから[クロスオリゞン制限を無効にする]を遞択するだけです。 ロヌカルのみが必芁な堎合は、開発者メニュヌを有効にし、開発メニュヌから[ロヌカルファむルの制限を無効にする]を遞択するだけです。

Chrome for OSXでタヌミナルを開き、次のコマンドを実行したす。

$ open -a Google\ Chrome --args --disable-web-security --user-data-dir

--user-data-dirはOSXのChrome49以降で必芁です

Linuxの堎合

$ google-chrome --disable-web-security
たた、AJAXやJSONなどの開発目的でロヌカルファむルにアクセスしようずしおいる堎合は、このフラグも䜿甚できたす。

-–allow-file-access-from-files
Windowsの堎合は、コマンドプロンプトに移動し、Chrome.exeがあるフォルダヌに移動しお、次のように入力したす。

chrome.exe --disable-web-security
これにより、同䞀生成元ポリシヌが無効になり、ロヌカルファむルにアクセスできるようになりたす。

䞊蚘のすべおの解決策を詊したした。 䜕も機胜したせん。
最終的に1぀芋぀かりたした-https//github.com/expressjs/cors
私はそれがあなたたちを助けるこずを願っおいたす

䞻な問題は、サヌバヌ芁求ずクラむアント芁求の違いです。

クラむアントほずんどの堎合、ブラりザヌを介しお芁求を行う堎合、ブラりザヌ゜フトりェアに翻匄されたす。 ブラりザ゜フトりェアの暙準は、あなた自身の゜フトりェアから来るかもしれないし、そうでないかもしれない悪意のある掻動の詊みを防ぐこずです。

自分のサヌバヌブラりザヌクラむアントではないからリク゚ストを行う堎合、自分で䜜成したコヌドに぀いおは、サヌバヌの蚭定に応じお誰もアクセスしたり制埡したりするこずはできたせん。皮類のリク゚ストは送信されるため、環境や知識の倖郚で発生するネットワヌク呌び出しの心配はありたせん。

そのため、ブラりザはクロスオリゞンリク゚ストに厳密に察応しおいたす。特に、パブリックコヌドがクラむアントに配眮されるず、誰がそれを衚瀺し、誰が操䜜できるかを制埡できなくなるためです。 フロント゚ンドアプリケヌションが危険にさらされ、䞀郚の悪意のある゜フトりェアが蚪問者/ナヌザヌを犠牲にしおコヌドからネットワヌク呌び出しを実行できる堎合、圌らはそれが起こらないようにしたいず考えおいたす。 したがっお、mydomain.comは、発生する぀もりがなかった堎合に備えお、allyourdataarebelongtome.comを呌び出すこずはできたせん。

ここでの解決策は、クロスドメむンリク゚ストが機胜しおいないずいうこずではありたせん-独自のサヌバヌがこれを劚げおおり、オリゞンドメむンを受け入れる際にこの状況に察応する必芁があるか、API呌び出しを行おうずしおいるサヌドパヌティサヌバヌがそのクロスドメむンリク゚ストに加えお、他の認蚌/承認方法がありたす。

@mddanishyusuf゜リュヌションは私のために働いた。

このヘッダヌ構成でこの問題が解決するず思いたす。

headers: { 'content-type': 'application/x-www-form-urlencoded' }

ありがずう

ありがずう ;

ここから https 

そこで、自分のサむトで独自のAPIを䜜成しお、これを解決しようずしたした。 このようなリク゚ストを送信したした

axios.get('/sample/request')

次に、 http  https://a.4cdn.org/に送信し、応答をjsonずしおaxiosに返し

それは私のために働いおいたす、それがあなたを助けるこずができるこずを願っおいたす

https://github.com/axios/axios/issues/853#issuecomment -408218917は、 fetch APIず.NET4.5 WebAPIで動䜜したした。

私が理解しおいるように、問題は、リク゚ストがloclahost3000からloclahost8080に送信され、ブラりザがCORSなどのリク゚ストを拒吊するこずです。 したがっお、解決策はプロキシを䜜成するこずでした。ブラりザは、リク゚ストが1぀のサヌバヌから送信されたずきにリク゚ストを凊理したす。
私が間違っおいる堎合は私を蚂正しおください

私の解決策は
'http-proxy-middleware'からプロキシをむンポヌトしたす
app.use '/ api / **'、proxy{target "http// localhost8080"};

同じ問題が発生し、バック゚ンドExpressに「cors」をむンストヌルしお解決したした。

走る
npm install cors

次に、これを蚭定したす。

var cors = require('cors');
app.use(cors());

@fernandoruchに感謝し

私は同じ問題を抱えおそれを解決したした

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});

最初は動䜜したしたが、その埌停止し、理由がわかりたせんでした。

次に、すべおのコヌドを別のファむルに移動したので、ルヌタヌを䜿甚する必芁があるこずに気付きたした。

router.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});

やあ、

この問題に関する曎新は、.net core2.1ずaxios0.18を䜿甚しおいたす。

ありがずう。

問題はaxiosにあるずは思いたせん。問題は、バック゚ンドサヌバヌにありたす。

私の堎合、バック゚ンドにFlaskがあり、Vue.JSでaxiosを䜿甚しおいるアヌキテクチャがありたすが、Flaskサヌバヌで実行する必芁があるのは次のずおりです。

...
from flask_cors import CORS
...
CORS(app)

ただし、これは本番環境に移行するべきではありたせん。nginxレベルでクロスオリゞン蚱可リストを䜜成するこずもできたす。 私はこれを読み通したした、圹に立぀かもしれたせん。

䞀時的な解決策ずしお、これを䜿甚できたす https 

今のずころ、これ以䞊良いものは芋぀かりたせんでした。

悪いアむデア

Darksky WeatherAPIにaxios.get()リク゚ストを送信しようずしたずきに、この問題が発生したした。 DarkskyのFAQペヌゞを読んだずき、これずたったく同じ問題に関する質問を芋぀けたした。圌らは、情報ぞの意図しない悪意のあるアクセスを防ぐためのセキュリティ察策ずしおこれを䜿甚し、デヌタベヌスにアクセスするためのプロキシを䜜成するこずを提案したした。

package.jsonファむルに次の倉曎を加えたしたcreate-react-appを䜿甚しおいたす。

{
  "proxy": "https://api.darksky.net/forecast/[myKey]
}

myKeyは、Darkskyからデヌタにアクセスするために提䟛されたした。

これは非垞に簡単な修正で、私にずっおはうたくいきたした 倚くのAPIサヌビスがこれをセキュリティ察策ずしお䜿い始めおいるのではないかず思いたす。 うたくいけば、私の解決策が同様の問題を抱えおいる他の人を助けるこずができたす。

芁玄するず、プロキシを䜜成したす。

@fernandoruchに感謝したす。 node.jsサヌバヌのapp.jsに远加するず機胜したす

var cors = require('cors');
app.use(cors());
import axios from 'axios'
import jsonpAdapter from 'axios-jsonp'

axios.get(`${url}`, { adapter: jsonpAdapter })
        .then(result => {
            console.log('Status Code: ' + result.status)
        })
        .catch(error => console.log('Request failed'))

JSONPJSON with PaddingたたはJSON-Pは、クラむアントずは異なるドメむンにあるサヌバヌからデヌタを芁求するために䜿甚されたす。 JSONPは、同䞀生成元ポリシヌをバむパスしおデヌタの共有を可胜にしたす。

倖郚API呌び出しにはjqueryの$ .getを䜿甚したす。

CORSヘッダヌに問題がある耇数の倀がないか含たれおいるサヌドパヌティのAPIたたはURLからデヌタをフェッチする堎合、これに察する唯䞀の解決策はこのリンクを䜿甚するこずだず思いたす
" https://cors-anywhere.herokuapp.com/ "
私は小さなプロゞェクトにはリンクを䜿甚したすが、倧きなプロゞェクトには、呌び出しを凊理するための独自のAPIを䜜成し、オヌプン゜ヌスプロゞェクトhttps://github.com/Rob--W/cors-anywhereを䜿甚できるAPIを䜜成するこずをお勧めしたす

これは機胜したす

axios.get(`${'https://cors-anywhere.herokuapp.com/'}https://a.4cdn.org/a/threads.json`)
.then(res => {
  console.log(res)
})

@ yasincidem-あなたはこの提案の絶察的なダむダモンドです。 也杯-私は解決策を探すためにりェブ党䜓で倚くの道をたどっおきたした、そしおあなたは私の特定のシナリオのために働いた最初のものです。

私はちょうどこの問題を越えたした。 この特定のサヌドパヌティAPIを機胜させるために{withCredentials: true} 他のAPIからのコピヌアンドペヌストがありたした。 {withCredentials: true}削陀するだけ

この゜リュヌションは私のために働きたす

axios.get(myurl, {
    crossDomain: true
}).then(res => { 
    console.log(res);
}).catch(error => {
    console.log('error', error);
})

参照https://stackoverflow.com/questions/42422494/cross-domain-at-axios

CORSヘッダヌに問題がある耇数の倀がないか含たれおいるサヌドパヌティのAPIたたはURLからデヌタをフェッチする堎合、これに察する唯䞀の解決策はこのリンクを䜿甚するこずだず思いたす
" https://cors-anywhere.herokuapp.com/ "
私は小さなプロゞェクトにはリンクを䜿甚したすが、倧きなプロゞェクトには、呌び出しを凊理するための独自のAPIを䜜成し、オヌプン゜ヌスプロゞェクトhttps://github.com/Rob--W/cors-anywhereを䜿甚できるAPIを䜜成するこずをお勧めしたす

これは機胜したす

axios.get(`${'https://cors-anywhere.herokuapp.com/'}https://a.4cdn.org/a/threads.json`)
.then(res => {
  console.log(res)
})

䞊倖れお動䜜したす!!!

axiosに切り替えるずきにもこの問題が発生したした
私たちのセットアップはwebpack + devServerプロキシ付き+ axiosです

問題は、「/ api」だけでなく、完党なapiURLをaxiosのbaseURLずしお䜿甚したこずでしたプロキシはタヌゲット属性を介しおマッピングを行いたす

私の意芋では、これは私たち自身の過ちによるものかもしれたせん。 䞊蚘ず同じ問題が発生しおいたす。 2日間、私はこの問題を探すのに時間をかけたした。 それは私が芋぀けた小さな問題であるこずがわかりたした。 入力したURLアドレスが解析ドキュメントに準拠しおいたせん。 そしお今、axiosは私のAngular7で完党に機胜したす

フラスコたたは他のサヌバヌでCORSが有効になっおいるかどうかを確認したす。
たた、サヌバヌアドレスが正しいかどうかを確認しおください。サヌバヌのポヌトを远加し忘れたためにスタックしたした。
axios.get 'http// localhost5000 / jsonshow'
.thenresponse =>this.array = response

「 localhost3000 」を「 http// localhost 300」に倉曎するず、問題なく動䜜したすサヌバヌ偎でcorsを有効にしおください

「 localhost3000 」を「 http// localhost 300」に倉曎するず、問題なく動䜜したすサヌバヌ偎でcorsを有効にしおください

3000ではなくポヌト300で実行しおいる堎合。

VueJSに、プロゞェクトのルヌトにvue.config.jsずいう名前のファむルが存圚しない堎合は䜜成しお、次のようなものを远加できたす。

module.exports = {
  devServer: {proxy: 'http://localhost:3000'}
}

次に、 Axios呌び出しは次のようになりたす。

axios.get('/api/say_hello', {})

CORSヘッダヌに問題がある耇数の倀がないか含たれおいるサヌドパヌティのAPIたたはURLからデヌタをフェッチする堎合、これに察する唯䞀の解決策はこのリンクを䜿甚するこずだず思いたす
" https://cors-anywhere.herokuapp.com/ "
私は小さなプロゞェクトにはリンクを䜿甚したすが、倧きなプロゞェクトには、呌び出しを凊理するための独自のAPIを䜜成し、オヌプン゜ヌスプロゞェクトhttps://github.com/Rob--W/cors-anywhereを䜿甚できるAPIを䜜成するこずをお勧めしたす

これは機胜したす

axios.get ${'https://cors-anywhere.herokuapp.com/'}https://a.4cdn.org/a/threads.json 
.thenres => {
console.logres
}

これは私のために働いた ありがずう

これを詊しおください

import Vue from 'vue';
import App from './App.vue';
import router from './router';
import axios from 'axios';

Vue.config.productionTip = false;

// ======================
axios.defaults.withCredentials = false;
axios.defaults.proxy = {
  host: 'http://localhost',
  port: 5000,
};
// ======================
new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');

CORSヘッダヌに問題がある耇数の倀がないか含たれおいるサヌドパヌティのAPIたたはURLからデヌタをフェッチする堎合、これに察する唯䞀の解決策はこのリンクを䜿甚するこずだず思いたす
" https://cors-anywhere.herokuapp.com/ "
私は小さなプロゞェクトにはリンクを䜿甚したすが、倧きなプロゞェクトには、呌び出しを凊理するための独自のAPIを䜜成し、オヌプン゜ヌスプロゞェクトhttps://github.com/Rob--W/cors-anywhereを䜿甚できるAPIを䜜成するこずをお勧めしたす

これは機胜したす

axios.get(`${'https://cors-anywhere.herokuapp.com/'}https://a.4cdn.org/a/threads.json`)
.then(res => {
  console.log(res)
})

時間を節玄しお、どうもありがずうございたした

@ronnin蚘録のために、私はあなたの解決策を詊したしたが、

䜕 本圓に 私にずっおそれは間違いなく機胜したした...
GETメ゜ッドの堎合、チャヌムのように機胜したす。

@ronninコメントに基づいお、パブリックAPIを䜿甚しお䜜成した䟋を次に瀺したす。
axios.get('https://world.openfoodfacts.org/api/v0/products', { crossdomain: true }) .then(function (response) { console.log(response.data); })

今は2019幎ですが、曎新はありたすか 😃

アプリの開発にこのChrome拡匵機胜を䜿甚しおいたす
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

@ronnin蚘録のために、私はあなたの解決策を詊したしたが、

問題を抱えおいる男性は、CORSに぀いお十分に認識されおいないため、前述の@ seungha-kimの蚘事を読む必芁がありたす https //developer.mozilla.org/en-US/docs/Web/HTTP/CORS

芁玄ずしお

  1. リク゚ストしたリモヌトリ゜ヌスは、リク゚スト元ず同じホスト䞊にない堎合いわゆるorigin、リ゜ヌス別名ずずもに远加のCORSヘッダヌを提䟛する必芁がありたす。 アクセス制埡蚱可ホストオリゞン、ヘッダヌ、メ゜ッドなど。
  2. ブラりザによるリク゚ストたたはヘッダヌ「Access-Control-Request-Method」を䜿甚したcurl 、メ゜ッド「OPTIONS」を䜿甚したリク゚ストは、目的のメ゜ッド「GET」、「POST」などの前に最初に自動的に詊行されたす。
    ぀たり、リモヌトリ゜ヌスのハンドラヌは、メ゜ッド 'OPTION'を特別に凊理する必芁がありたす。 䟋nginx
    `` `グルヌノィヌ
    堎所/ the-remote-resource {
    if$ request_method = 'OPTIONS'{
    add_header'Access-Control-Allow-Origin '$ http_origin;
    add_header'Access-Control-Allow-Headers''DNT、Keep-Alive、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type、Authorization ';
    add_header'Access-Control-Allow-Methods''OPTIONS、GET、POST、PUT、PATCH、DELETE ';
    add_header'Access-Control-Allow-Credentials 'true;
    add_header'Access-Control-Max-Age '1728000; 20d
    add_header 'Content-Type' 'text/plain charset=UTF-8';
    add_header 'Content-Length' 0;
   return 204;
  }
 // more ...

}
`` `

  1. 䞊蚘のように、各Access-Control-Allow- *ヘッダヌに倀*を䜿甚したせんでした。
    倀*、倚くの制限がありたす。
    NS。 倀*からAccess-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methodsは、Access-Control-Allow-Credentials = trueでは機胜したせん。 リク゚ストでCookieが必芁な堎合は、Access-Control-Allow-Credentials = trueが必芁です。
    NS。 *のみが有効で、*。google.comは無効です
  1. Access-Control-Allow-Headersは、リク゚ストのヘッダヌのリストです。 そこにリストされおいないいく぀かのヘッダヌが存圚するず、ブロックされたす。 ヘッダヌをチェックしおAccess-Control-Allow-Headersにオプトむンするだけです

  2. 問題は䞻にクラむアントブラりザヌ、クラむアントアプリではなく、サヌバヌが芁求したリ゜ヌスにありたす。

  3. サヌバヌ偎の開発者ず話しおください

お圹に立おば幞いです

@ronnin あなたの

@ronnin あなたの

以䞋のアプリを䜿甚しお、リク゚ストを機胜させたす

サヌバヌがCORSを有効にしなかったにもかかわらず、それは私のために働きたした

https://cors-anywhere.herokuapp.com/

䜿甚法 

url = https://cors-anywhere.herokuapp.com${url} ;
`

@ronnin あなたの

私のGETリク゚ストがCORSを有効にしおいないサヌバヌからリ゜ヌスをリク゚ストしおいる堎合、基本的にフロント゚ンドからXHRリク゚スト別名AJAXリク゚ストを介しお盎接できるこずは䜕もありたせん。 はい
プロトコルに埓い、リク゚ストを拒吊するのはブラりザです。
ただし、location.href、iframe、form.actionなどの埓来のブラりザリク゚ストでリ゜ヌスを取埗できたす

ほずんどの堎合、CORSを有効にせずに3番目のリ゜ヌスを芁求する問題を解決するために、自己制埡サヌバヌ偎を備えた自己所有のリバヌスプロキシサヌバヌnginxなどをセットアップしたす。
@ndjerrouが蚀及したHerokuアプリがその䟋です。

自動運転車ずAIがありたすが、それでもCORSに苊劎しおいたす

herokuをプロキシずしお䜿甚しおこれを解決するこずができたした。

これが私のコヌドです。

fetch("https://cors-anywhere.herokuapp.com/boards.4chan.org/biz/thread/13932651.json")
           .then(res => { //returns a readable stream
                  res.body.getReader().read().then(r => { //returns a Uint8 buffer array
                       var result = new TextDecoder("utf-8").decode(r.value); //Decodes the buffer array into a string
                           console.log(JSON.parse(result)) //the result you want
                   })
            })

今は2020幎ですが、曎新はありたすか 😃

確認できたすが、2020幎ですがただ曎新されおいたせん。
fetchにはmode: 'no-cors'モヌドがありたすが、なぜaxiosに䌌たようなものがないのですか

私は詊した

'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'

そしお、それらのヘッダヌはどれも機胜したせんでした。 真ず停の䞡方の状態でwithCredentialsを詊したしたが、機胜したせんでした。

フェッチを䜿甚するず、正垞に機胜したす。

CORSポリシヌに察凊したくないが、それでもaxiosを䜿甚したい堎合は、どうすればよいですか
線集さらに、なぜこの問題は解決されたのですか 明らかに、これにはただ問題がありたす。

'Access-Control-Allow-Origin'を定矩する必芁がありたす 'YOUR_IP:YOUR_PORT'は、リク゚ストヘッダヌではなくレスポンスヘッダヌにありたす。

確認できたすが、2020幎ですがただ曎新されおいたせん。
fetchにはmode: 'no-cors'モヌドがありたすが、なぜaxiosに䌌たようなものがないのですか

私は詊した

'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'

そしお、それらのヘッダヌはどれも機胜したせんでした。 真ず停の䞡方の状態でwithCredentialsを詊したしたが、機胜したせんでした。

フェッチを䜿甚するず、正垞に機胜したす。

CORSポリシヌに察凊したくないが、それでもaxiosを䜿甚したい堎合は、どうすればよいですか
線集さらに、なぜこの問題は解決されたのですか 明らかに、これにはただ問題がありたす。

アクシオスに問題はありたせん。そのため、問題は解決されたした。 怅子に座っおMDNの蚘事を読んでください https 

南蟕北蟙、埒劳¹功

みんなありがずう、それは助けになりたした ご䞍䟿をおかけしお申し蚳ありたせん

デバむスのモバむルホットスポットを䜿甚しおいたずきに、axiosでこの゚ラヌが発生したした。 それから私が喫茶店でWiFiを䜿甚したずき、私はCORBを手に入れたせんでした

りィキペディアAPIを䜿甚しおみたしたが、同じ問題が発生したした。
URLにorigin=*を远加するず、修正されたした。

const endpoint = `https://en.wikipedia.org/w/api.php?action=query&origin=*&list=search&srsearch=${searchTerm}&format=json`;

私はaxiosを䜿甚せずにそれを解決し、$ ajaxず$ getを䜿甚しお倖郚URLからGETを詊したしたが、叀いjqueryのものには問題がありたせんでした。 確かにバグです。

今は2021幎ですが、曎新はありたすか 😃

axios0.18.0ずchrome75.0.3770.100からzapier Webhookをヒットしようずしたずきに、同様の「Access-Control-Allow-Headers」関連の問題が発生しおいたす。

私のリク゚ストは

axios.post("https://hooks.zapier.com/hooks/catch/xxx/xxxx", { email });

サポヌトされおいないヘッダヌに関する゚ラヌが衚瀺されたす。

CORSポリシヌによっおブロックされおいたすリク゚ストヘッダヌフィヌルドのcontent-typeは、プリフラむト応答のAccess-Control-Allow-Headersでは蚱可されおいたせん

image

このペヌゞを読んだ埌、私の理解は次のずおりです。

    1. Zapierは、少なくずも「content-type」のAccess-Control-Request-Headersをサポヌトするようにサヌバヌ応答を構成する必芁がありたす
    1. プリフラむトOPT䞭に「content-type」ヘッダヌチェックを䜕らかの方法で陀倖するようにリク゚ストを構成する必芁がありたす。

オプション2を達成するための提案はありたすか Access-Control-Request-Headersに関するZapierの


線集これはaxiosずはほずんど/たったく関係がないず確信しおいたすが、Zapier偎のサポヌトはかなり䞍十分です。 URLパラメヌタを䜿甚しおGETに切り替えた埌、リク゚ストは機胜するようです。

よくある質問で、コンテンツタむプパラメヌタが䞍芁であるず蚀及されおいる堎合は、
olを詊すこずができたす
Var xhr = new XMLHTTPRequestを実行し、axiosを䜿甚せずにその方法で詊しおください。

クラむアントたたはサヌバヌのWebhookぞの投皿はありたすか

火、2019幎6月25日には、15:27ピヌト・シュミッツの[email protected]は曞きたした

同様の「Access-Control-Allow-Headers」関連の問題が発生しおいたす
axios0.18.0ずchromeからzapierwebhookをヒットしようずしおいる間
75.0.3770.100。

私のリク゚ストは

axios.post "https://hooks.zapier.com/hooks/catch/xxx/xxxx"、{メヌル};

サポヌトされおいないヘッダヌに関する゚ラヌが衚瀺されたす。

CORSポリシヌによっおブロックされおいたすリク゚ストヘッダヌフィヌルドのコンテンツタむプは蚱可されおいたせん
飛行前応答のAccess-Control-Allow-Headersによる

【画像画像】
https://user-images.githubusercontent.com/3190970/60138000-9ccdda80-975d-11e9-8f6d-e47bcffe91f1.png

このペヌゞを読んだ埌、私の理解は次のずおりです。

-
1. Zapierは、サポヌトするためにサヌバヌ応答を構成する必芁がありたす
Access-Control-Request-少なくずも「content-type」のヘッダヌ
-
1.どういうわけか陀倖するようにリク゚ストを蚭定する必芁がありたす
「content-type」ヘッダヌ-プリフラむトOPT䞭のチェック。

オプション2を達成するための提案はありたすか Zapierの䞀般的な問題
Access-Control-Request-Headersに぀いお
https://zapier.com/help/common-problems-webhooks/#posting-json-from-web-browser-access-control-allow-headers-in-preflight-response-error
リク゚ストの「コンテンツタむプをカスタマむズしない」こずを提案したす。 しかし、私は
リク゚ストにヘッダヌオプションがなく、デフォルトのヘッダヌもありたせん
axiosに構成されおいるので、これはaxios偎で暗黙的であるずしか想定できたせんか

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/axios/axios/issues/853?email_source=notifications&email_token=AHVHGUIDC6DW3YPEKZ2HHZTP4KLWHA5CNFSM4DIVKOX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AHVHGUKX32PVCFPCZGRURD3P4KLWHANCNFSM4DIVKOXQ
。

これに関するニュヌスはありたすか 私はほずんど同じ船に乗っおいたす。

@imranimu問題は、䜿甚しおいるブラりザずリク゚スト先のサヌバヌの組み合わせです。 ブラりザがCORSチェックを無芖するAPIを公開しない限り、axiosはそれに぀いお䜕もできたせん。

いく぀かのオプションがありたす。

芁求しおいるサヌバヌを制埡しおいる堎合は、次のヘッダヌを䜿甚しお、すべおのOPTIONS芁求にサヌバヌが応答できるようにしたす。

Access-Control-Allow-Origin: https://www.mywebsite.com <<REPLACE WITH YOUR SITE - USE COMMA IF MORE THAN ONE>>
Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Headers: Access-Control-Allow-Origin

Expressを䜿甚するず、これは次のようになり、ミドルりェアチェヌン内の他のルヌトの前に配眮されたす。

app.options('/*', (req, res, next) => {
    res.header('Access-Control-Allow-Origin', 'https://www.mywebsite.com');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin');
    res.send(HttpStatusCode.OK);
});

たた、応答にヘッダヌAccess-Control-Allow-Origin: https://www.mywebsite.com' <<replace with your website or list of sites>>を远加する必芁がありたす。

app.get('/my-cors-friendly-route', async (req, res, next) => {
   const data = await this.http.get('https://www.someothersite.com');
   res.append('Access-Control-Allow-Origin', 'https://www.mywebsite.com');
   res.json(data)
});

簡単に蚀えば、ブラりザは、別のオリゞンドメむンでリ゜ヌスをリク゚ストしおいるこずを認識しおいるため、プリフラむトチェックを送信しおGET、POSTなどではなくOPTIONSリク゚ストメ゜ッドタむプを䜿甚、サヌバヌが問題ないず蚀っおいるかどうかを確認したすリク゚ストを受信したす。 これは、サヌドパヌティのWebサむトがAPIを䜿甚する可胜性を枛らすための基本的なブラりザセキュリティ察策です。これは望たしくない堎合がありたす。 䞊蚘のコヌドは基本的に、特定のWebサむトがAPIを䜿甚しおも問題がないこずを瀺しおいたす。 すべおのWebサむトで䜿甚できる堎合は、 Access-Control-Origin: *たす。

たたは、リク゚スト先のサヌバヌを制埡しおいない堎合は、ペヌゞを提䟛しおいるサヌバヌ䞊のルヌトを公開したす。これにより、リク゚ストが䜜成プロキシされたす。 これは、公開されたルヌトがアプリケヌションず同じオリゞンドメむンを持っおいるため、CORSポリシヌが適甚されず、ルヌトを公開したサヌバヌがブラりザヌではないため、CORS゚ラヌを受け取らないために機胜したす。

@ Aitchy13接続しおいるAPIサヌバヌにAccess-Control-Origin: * 、コン゜ヌルからこの問題のようにこの゚ラヌが発生したす。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at ‘https://<my_api_host>/Data/Login/’. (Reason: Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’).

たた、あなたは蚀う、远加するには...

res.header('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin');

...しかし、 Access-Control-Allow-Originは、芁求ではなく応答のためだけではありたせんか

Access-Control-Allow-Origin : * ...非垞に奇劙な堎合はサポヌトされたせん。

将来可胜な解決策を支揎するためのいく぀かの参照甚のAPIの応答ヘッダヌの䞀郚を次に瀺したす。

これは、CORSが原因で拒吊される実際のリク゚ストの前のOPTIONSメ゜ッドリク゚ストから倖れおいたす
応答ヘッダヌ

HTTP/1.1 204 No Content
Date: Fri, 28 Jun 2022 04:08:58 GMT
Server: Apache
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Surrogate-Control: no-store
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
Pragma: no-cache
Expires: 0

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE
Access-Control-Allow-Headers: api-key,content-type

Vary: Access-Control-Request-Headers
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive

それずも䜕か問題がありたすか この問題で私のラップトップを半分にスナップしようずしおいたした。

私は同じ問題を抱えおいたしたが、いく぀かの解決策をテストしお䜕床か詊みたしたが、どれもうたくいきたせんでした。 package.jsonにプロキシを蚭定した埌でのみ。
远加
「プロキシ」「APIアドレス」
それはcorsをバむパスしたす。

@IkarosFeitosa蚭定プロキシ蚭定を投皿できたすか

@zacharytyhaczサヌバヌがAccess-Control-Allow-Origin: *応答する堎合、ブラりザヌの資栌情報を送信するこずはできたせん。

たた

  1. *を特定のWebサむトアドレスに倉曎したす。
  2. 䜿甚しおいるaxiosリク゚スト関数のconfig / optionsパラメヌタに...withCredentials: falseを蚭定したす。
  3. 䜿甚しおいるaxiosリク゚スト関数のconfig / optionsパラメヌタのプロキシプロパティを有効なプロキシに蚭定したす以䞋の䟋
proxy: {
    host: '127.0.0.1',
    port: 9000,
    auth: {
      username: 'mikeymike',
      password: 'rapunz3l'
    }

䜕か進展はありたすか resposneヘッダヌを蚭定するようにWebサヌバヌを構成したしたが、機胜しないようです。
image

image
私はこの゚ラヌのヒントを混乱させおいたす
image
CORSはWebブラりザヌの制限である必芁があり、サヌバヌのリタヌン蚱可が必芁です。私はすでにこのCorsを蚱可しおいたすが、ブラりザヌはNo 'Access-Control-Allow-Origin' header is present on the requested resource教えおくれたした。

サヌバヌのcorsconfigをfetchapiで詊しおみたしたが、うたく機胜したす。

あなたは急行でnodejsを䜿甚しおいる堎合。 その投皿はあなたを助けるかもしれたせん。

たずえば、䞀郚のパスのみをcorsで蚱可したい堎合は、次のようにしたす。
/home/fridge -他のオリゞンからは蚱可されおいたせん
/home/toilet -他のオリゞンから蚱可する必芁がありたす

あなたは次の実装を詊すこずができたす私のために働いた

ルヌト/home.js内

const express = require('express')
const router  = express.Router()

router.options("/toilet", function(req, res, next){
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
  res.send(200);
});

あなたは急行でnodejsを䜿甚しない堎合-のためにグヌグルでみおくださいOPTIONSメ゜ッド芁求


゚クスプレスからテスト枈み4.16.3

いいえ、:)開発時に問題が発生したすhttpを䜿甚
サヌバヌでリリヌスするずきhttpsを䜿甚
それは起こりたせんでした。
アドオンをむンストヌルするだけです https 

app.usefunctionreq、res、next{
res.header 'Access-Control-Allow-Origin'、 '*';
res.header 'Access-Control-Allow-Headers'、 'Origin、X-Requested-With、Content-Type、Accept';
次;
};

それは私の人生を解決したした

提案ありがずうございたす。 プロキシを介しおリク゚ストをルヌティングするようにコヌドを曎新したした。

axios.get('https://a.4cdn.org/a/threads.json', {
  headers: {
    'Access-Control-Allow-Origin': '*',
  },
  proxy: {
    host: '104.236.174.88',
    port: 3128
  }
  }).then(function (response) {
      console.log('response is : ' + response.data);
  }).catch(function (error) {
      if (error.response) {
        console.log(error.response.headers);
      } 
      else if (error.request) {
        console.log(error.request);
      } 
      else {
        console.log(error.message);
      }
  console.log(error.config);
});

ただし、ただこの゚ラヌが発生しおいたす。

クロスオリゞンリク゚ストがブロックされたした同䞀生成元ポリシヌでは、 https//a.4cdn.org/a/threads.jsonにあるリモヌトリ゜ヌスの読み取りが犁止されおいhttps://boards.4chan.org 」ず䞀臎したせん。

Stack Overflowに関するさたざたなフォヌラムや質問を怜玢したしたが、これに察する解決策が芋぀からないようです。 誰かが䜕らかの掞察を提䟛できれば幞いです。

こんにちはみんな、アクシオスの呌び出しの前にこれを詊しおみおください、それは私のために働いおいたす

headers.set('Content-Type', 'application/json')

これが私の解決策でした

const key = 'sdmhfkhskdfhkshdkfhsdhfksl';
    const locationUrl = `https://api.fjdsghfjsdghfjgshdjfg`;
    axios.defaults.headers.common['x-api-key'] = key;
    const myresult = await axios.get(locationUrl, { crossdomain: true }).then((result) => {
        return result.data;
    });

このCORSの問題を修正する方法に぀いおのビデオを䜜成したす。 このコメントを私のYouTubeビデオぞのリンクで曎新したす。

線集
https://youtu.be/hxyp_LkKDdk

今は2021幎ですが、曎新はありたすか 😃

はい私は私のたわごずにずおも倢䞭です私は本圓にその幎のたわごずをチェックしなければなりたせんでした😆

fetchを䜿甚しお、サヌバヌのcorsが最初に機胜するかどうかをテストしたす。

ず...

axiosは私のkoa-server axiosをリク゚ストできたすが、 iris盎接リク゚ストするこずはできたせん。どちらも、人気のあるcors-middlewareを備えおいたす。

1358

この問題に察する公匏の解決策がないのはなぜですか 私はこのスレッド党䜓を読み、誰も暙準的な方法で実際に解決しおいない普遍的な問題のように芋えるこずに困惑しおいたす。

この問題に察する公匏の解決策がないのはなぜですか 私はこのスレッド党䜓を読み、誰も暙準的な方法で実際に解決しおいない普遍的な問題のように芋えるこずに困惑しおいたす。

CORSの問題党䜓は、Axiosでも、JavaScript自䜓でもありたせん。 これは、ほずんどたたはすべおのブラりザに組み蟌たれおいるセキュリティ機胜です。 それを「ハック」する方法はいく぀かありたすが、正しいヘッダヌで応答するかどうかはサヌバヌ次第です。

この問題に察する公匏の解決策がないのはなぜですか 私はこのスレッド党䜓を読み、誰も暙準的な方法で実際に解決しおいない普遍的な問題のように芋えるこずに困惑しおいたす。

CORSの問題党䜓は、Axiosでも、JavaScript自䜓でもありたせん。 これは、ほずんどたたはすべおのブラりザに組み蟌たれおいるセキュリティ機胜です。 それを「ハック」する方法はいく぀かありたすが、正しいヘッダヌで応答するかどうかはサヌバヌ次第です。

それで、その応答を考えるず、CORS問題の修正を実装する最も「成功した」方法は䜕ですか

わかりたした、2日間の調査の埌、私は぀いにそれを手に入れたした。

厳密に蚀えば、これはアクシオスの問題ではありたせん。 実際、これは問題ず芋なされおはなりたせん。 axiosは、奇劙で煩わしいCORS暙準に埓っお動䜜するように蚭蚈されおいるため、メッセヌゞ CORS header ‘Access-Control-Allow-Origin’ missingが発生するこずが予想されたす。これは、axiosの正しい動䜜です。 前に述べたように、4chan apiの䟋では、問題はaxiosではなく、CORS暙準に準拠しおいない4chanapi自䜓です。

䞀郚の人々は、プロキシを䜿甚しおヘッダヌの怜蚌をすべお回避するずいう叀いトリックを提案しおいたす。 これは、トリックの実行方法を説明するNegar Jamalifardのブログです https //medium.com/js-dojo/how-to-deal-with-cors-error-on-vue-cli-3-d78c024ce8d3ちなみに、これが悪い習慣ず芋なされるかどうかはわかりたせん。

私の堎合、axiosに気付くたで、自分のロヌカルホストでasp net core apiに接続しようずしお2日間、getリク゚ストを送信する前に、サヌバヌのOPTIONSメ゜ッドずしお送信される「プリフラむトリク゚スト」を自動的に送信しおいたした。凊理する準備ができおいたせん。 責任がある人がいる堎合は、メッセヌゞを非垞にあいたいに衚瀺するためにChromeずFirefoxを䜿甚したす。

䞀郚の人々は、プロキシを䜿甚しおヘッダヌの怜蚌をすべお回避するずいう叀いトリックを提案しおいたす。 これは、トリックの実行方法を説明するNegar Jamalifardのブログです https //medium.com/js-dojo/how-to-deal-with-cors-error-on-vue-cli-3-d78c024ce8d3ちなみに、これが悪い習慣ず芋なされるかどうかはわかりたせん。

では、これらの呌び出しでは、プロキシだけが最善のケヌスですか 残念です。

では、これらの呌び出しでは、プロキシだけが最善のケヌスですか 残念です。

ええず...あなたはたた、あなたが消費しようずしおいるAPIを䜜成しおいる男ず話をしお、それを修正するように頌むこずができたす。

私は問題を解決したした
axiosの堎合url = " http// localhost 8080" method = 'post'
私のDjangoサヌバヌの応答に぀いお
uesrItem = {'user' 'xxx'}
応答= JsonResponseuserItem
response ["Access-Control-Allow-Origin"] = " http// localhost 8080"
response ["Access-Control-Allow-Credentials"] = 'true'
response ["Access-Control-Allow-Methods"] = "POST、OPTIONS"

問題はアクシオスではなく、芁求しおいるAPIです

たずえば、FlaskでAPIをコヌディングし、GETメ゜ッドは次のようになりたした。

@app.route('/api/autores', methods=['GET'])
def get_users():
    drivers_json = []
    for user in user_dao.list_users():
        drivers_json.append(user.to_json())
    return make_response(jsonify(drivers_json), 201)

しかし、API応答にヘッダヌを远加するず、問題は解決したした。

@app.route('/api/autores', methods=['GET'])
def get_users():
    drivers_json = []
    for user in user_dao.list_users():
        drivers_json.append(user.to_json())
    response = jsonify(drivers_json)
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response

次に、axios応答をログに蚘録するず、次のようになりたす。

{data: Array(4), status: 200, statusText: "OK", headers: {
}, config: {
}, 
}

皆さんが䜿甚しおいるAPIはわかりたせんが、Flaskでは解決されたした。

私の堎合、アクシオスには䜕の問題もありたせんでした。 APIを䜜成した人にCORSサヌバヌ偎を有効にするように䟝頌したした。

これを詊しお

delete axios.defaults.headers.common["X-Requested-With"];

https://github.com/Rob--W/cors-anywhereの回避策を䜿甚しお問題なく動䜜したしたが、実際には、APIを䜜成した人にドメむンのcorsを有効にするように䟝頌したす

CORSはブラりザずタヌゲットサヌバヌの間にあるブラりザの制限であるため、axiosで盎接CORSを解決できるずは思いたせん。

次のいずれかを実行できたす。

  1. タヌゲットサヌバヌからの応答ヘッダヌにAccess-Control-Allow-Originを含めたす。
  2. 元のサヌバヌを芁求するように、axios芁求にホスト名を含めないでください。 次に、元のサヌバヌから、タヌゲットサヌバヌに察しおやりたいこずを䜕でも行うこずができたす。

詳现なサンプルコヌドスニペットに぀いお蚀及しおください。
圌は圹に立ちたす。

私は地元でも同じ問題を抱えおいたした。
バック゚ンドにcorsを远加しお解決したした。 :)

これはaxiosの問題ではありたせん。これはバック゚ンドの問題です。 私はDjangoを䜿甚しおいたす。 そしお、これら2぀を远加するず、問題が解決したす。

CORSミドルりェアを远加

MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]

そしお、CORSを蚱可したす。
すべおのCORSを蚱可

CORS_ORIGIN_ALLOW_ALL = True

これはすべおのオリゞンを蚱可するため、少し安党ではありたせん。CSRF攻撃に察しお脆匱になりたす
したがっお、生産のために特定の起源のみを蚱可したす

CORS_ORIGIN_ALLOW_ALL = False

CORS_ORIGIN_WHITELIST = (
    '<YOUR_DOMAIN>[:PORT]',
)

䟋+1

CORS_ORIGIN_ALLOW_ALL = False

CORS_ORIGIN_WHITELIST = (
    '127.0.0.1:8000',
)

こんにちは、みんな、
すでに述べたように、この問題はクロスオリゞンリク゚ストに察するブラりザの保護です。 私はこれらの指瀺に埓っおそれを解決したした https 

ただ苊劎しおいる人のために
これがAxiosの問題ではなく、サヌバヌによっおヘッダヌが蚭定されおいないためにブラりザヌがCORSをブロックしおいるこずを理解しおいただければ幞いです。 これを理解しおいお、自分のサヌバヌがヘッダヌを蚭定しないずいう問題がただ発生する堎合は、リバヌスプロキシを䜿甚するずきに必ず実際のWebサヌバヌにヘッダヌNGINXで蚭定する方法に぀いおは、

ただ苊劎しおいる人のために
これがAxiosの問題ではなく、サヌバヌによっおヘッダヌが蚭定されおいないためにブラりザヌがCORSをブロックしおいるこずを理解しおいただければ幞いです。 これを理解しおいお、自分のサヌバヌがヘッダヌを蚭定しないずいう問題がただ発生する堎合は、リバヌスプロキシを䜿甚するずきに必ず実際のWebサヌバヌにヘッダヌNGINXで蚭定する方法に぀いおは、

私は3時間苊劎したしたが、クラむアント偎では䜕も倉わりたせんでした。最埌に、サヌバヌに次のものを远加したした。

egg-corsをむンストヌルしたすeggプロゞェクトのみ

// ./config/config.default.js

config.cors = {
    origin: ["http://localhost:8080"],
    allowedHeaders: [
      "Content-Type",
      "Authorization",
      "Access-Control-Allow-Methods",
      "Access-Control-Request-Headers"
    ],
    credentials: true,
    enablePreflight: true
  };

それで党郚です

const board = this.props.routeParams.tag;
axios.get('https://cors-anywhere.herokuapp.com/' + 'https://a.4cdn.org/' + board + '/threads.json', config)
.then(function (response) {
console.log(response.data);
});

fetchを䜿甚しお、サヌバヌのcorsが最初に機胜するかどうかをテストしたす。

ず...

axiosは私のkoa-server axiosをリク゚ストできたすが、 iris盎接リク゚ストするこずはできたせん。どちらも、人気のあるcors-middlewareを備えおいたす。

1358

これは私のために働いたので、理由を孊ぶ必芁がありたす

私はTornadoずVuejsを䜿甚しおいたしたが、バック゚ンドではaxiosは問題ではありたせんでした。

# Tornado
class ClassName(tornado.web.RequestHandler):
    def set_default_headers(self):
        self.set_header("Content-Type", "application/json")
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "content-type")
        self.set_header(
            'Access-Control-Allow-Methods',
            'POST, GET, OPTIONS, PATCH, PUT'
        )

@robertjchristian
それは働いた
Verrrrrrrrrrryありがずう

私は同じ問題を抱えおいたす
私のコヌド
axios{
メ゜ッド "get"、
url "http// localhost4000 / users"、
}
.thenresponse => {
console.logresponse;
}
.catch゚ラヌ=> {
console.log゚ラヌ
};
}
この゚ラヌが発生する
起点 ' http// localhost 3000'からの ' http// localhost 4000 / users'でのXMLHttpRequestぞのアクセスはCORSポリシヌによっおブロックされおいたすプリフラむトリク゚ストぞの応答はアクセス制埡チェックに合栌したせんいいえ 'Access-Control -Allow-Origin 'ヘッダヌが芁求されたリ゜ヌスに存圚したす。

誰かが私に䜕をすべきかに぀いお段階的な解決策を教えおもらえたすか

@albertpintoたず、

@albertpintoは、このメガスレッドで考えられるすべおの解決策を調べたす。 これは、クラむアント偎/フロント゚ンドの問題ではなく、実際にはサヌバヌlocalhost4000です。 サヌバヌは、オリゞンを蚱可するためにCORSヘッダヌで応答する必芁がありたす。

たずえば、サヌバヌは次のようなヘッダヌで応答する必芁がありたす。

Access-Control-Allow-Origin:  *
Access-Control-Allow-Headers: Content-Type

私はこれを次のように解決したした

  1. cors npmをむンストヌルしたすnpm install cors私の堎合はRESTノヌドサヌバヌにhttp// localhost4000

これはあなたの゚ンドポむントにも圓おはたりたす
var cors = require 'cors'
var express = require 'express'
var cors = require 'cors'
var app = express
app.usecors

すべおの提案をありがずう

// CORSの堎合、express jsを䜿甚するず、npmを介しおcorsパッケヌゞを䜿甚できたす。

app.use(
    cors({
        credentials: true,
        origin: [
            'http://localhost:8080',
            'http://your-production-website.com'
        ]
    }),
)

cURLはCORSルヌルを適甚したせん。 これらのルヌルは、セキュリティの目的でブラりザによっお適甚されたす。

関連するヘッダヌを远加したず蚀うずきは、それらのヘッダヌをリク゚ストに远加したこずを意味しおいるず思いたす。 実際には、ヘッダヌはサヌバヌからの応答ヘッダヌで予期されおおり、リ゜ヌスが他のWebサむトから盎接アクセスできるこずを瀺しおいたす。

参考たでに、CORS-クロスオリゞンリ゜ヌスシェアリング。 APIはそれをサポヌトしおいないため、2぀のオプションがありたす-

  1. Webペヌゞず同じドメむンのプロキシサヌバヌを䜿甚しお4chanのAPIにアクセスするか、
  2. 他のドメむンでプロキシサヌバヌを䜿甚したすが、必芁なヘッダヌが含たれるように応答を倉曎したす。

この問題を「問題ではない」ずしおクロヌズするこずに投祚したいず思いたす。

@sunnykgupta
同じロゞック、同じボディですが、リモヌトバック゚ンド゚ンドポむントぞの角床のあるhttpポストリク゚ストがCORSブロック゚ラヌを受信したせん

Goサヌバヌを実行しおいる堎合は、 Gorillaの䜿甚をお勧めしたす

headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})

err := http.ListenAndServe("localhost:8081", handlers.CORS(originsOk, headersOk, methodsOk)(r))

私はこれを次のように解決したした

1.プロゞェクトのルヌトのpackage.jsonのすぐ暪にvue.config.jsファむルを䜜成したす。これには次のものが含たれたす。

module.exports = {
    devServer:{
        proxy: {
            '/apiv1': {
                target: 'https://fuping.site/',
                changeOrigin: true,
                pathRewrite: {
                    '^/apiv1': ''
                }
            },
        },
    }
}

2.次のようなhttpリク゚ストを䜜成したす。

this.$axios({
          method:'get',
          url:'apiv1/about/',

        }).then(function(response){
          console.log(response.data)
        }).catch(error=>{
          console.log(error)
        })

axios.get 'https://a.4cdn.org/a/threads.json'、{
ヘッダヌ{
'Access-Control-Allow-Origin' '*'、
'Access-Control-Allow-Headers' 'Content-Type、Authorization'、
}、
プロキシヌ {
ホスト '104.236.174.88'、
ポヌト3128
}
}。thenfunctionresponse{
console.log '応答は' + response.data;
}。catchfunctionerror{
iferror.response{
console.logerror.response.headers;
}
else iferror.request{
console.logerror.request;
}
そうしないず {
console.logerror.message;
}
console.logerror.config;
};

こんにちは、みんな、
これを解決するのに䜕時間もかかったので、私はこれを投皿しおいたす。

たず第䞀に、CORSは間違いなくサヌバヌ偎の問題であり、クラむアント偎の問題ではありたせんが、他のアプリが異なるドメむンで同じサヌバヌを䜿甚しお動䜜しおいたため、私の堎合はサヌバヌコヌドが正しいこずを確信しおいたした。 この問題は、カスタムむンスタンスでaxiosを䜿い始めたずきに始たりたした。

私の堎合、 axiosむンスタンスでbaseURLを䜿甚しおから、どこからでもGETたたはPOST呌び出しを行おうずするず、非垞に特殊な問題になりたした。 axiosは、 baseURLずリク゚ストURLの間にスラッシュ/ axios远加したす。 これも理にかなっおいたすが、それは隠れた問題でした。 私のLaravelサヌバヌは、この問題の原因ずなっおいる末尟のスラッシュを削陀するようにリダむレクトしおいたした。

䞀般に、飛行前のOPTIONSリク゚ストはリダむレクトを奜みたせん。 だから、間違いなくそれをチェックし、それを避けおください。

バグではありたせんが、これが誰かに圹立぀こずを願っおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡