Axios: GET рдЕрдиреБрд░реЛрдз рдкрд░ 'рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рдирд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдмреНрд▓реЙрдХреНрдб' рд╣реЛ рд░рд╣реА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  143рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рд╕рд╛рд░рд╛рдВрд╢

рдореИрдВ рдПрдХ рдмреЛрд░реНрдб рд╕реЗ рдзрд╛рдЧреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4chan рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

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).
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд╡рд╣реА рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред

рд╕рдВрджрд░реНрдн

  • рдЕрдХреНрд╖реАрдп рд╕рдВрд╕реНрдХрд░рдг: рдЙрджрд╛рд╣рд░рдг: v0.16.0
  • рдкрд░реНрдпрд╛рд╡рд░рдг: рдЬреИрд╕реЗ: рдиреЛрдб v6.9.4, Firefox 51.0.1, Ubuntu 14.04

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд╣реВрдВ...

рд╕рднреА 143 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд░реНрд▓ рд╕реАрдУрдЖрд░рдПрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдирд┐рдпрдо рд╕реБрд░рдХреНрд╖рд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЙрди рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ рд╣реЗрдбрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрдиреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

FYI рдХрд░реЗрдВ, CORS - рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рдирд▓ рд░рд┐рд╕реЛрд░реНрд╕ рд╢реЗрдпрд░рд┐рдВрдЧред рдЪреВрдВрдХрд┐ рдЖрдкрдХрд╛ рдПрдкреАрдЖрдИ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ -

  1. 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 рдкрд░ рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ

рдореИрдВрдиреЗ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдордВрдЪреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд╣реВрдВ...

рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рди рдЕрдиреБрд░реЛрдз рдЕрд╡рд░реЛрдзрд┐рдд: рд╕рдорд╛рди рдореВрд▓ рдиреАрддрд┐ https://a.4cdn.org/a/threads.json рдкрд░ рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ https://a.4cdn.org рдФрд░ https://boards.4chan.org рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЛрдореЗрди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрддрд░ рдПрдХ рдФрд░ рдмреЛрд░реНрдбреЛрдВ рдореЗрдВ рд╣реИ

рдореБрдЭреЗ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдкрд░ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рд╕рд╛рдЖрдореЗ

рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://chrome.google.com/webstore/detail/cors-toggle/omcncfnpmcabckcddookmnajignpffnh

рдореБрдЭреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ ..

@PetitBateau рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди axios рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛ред

@ adl1995 рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓

рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╡рд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рджреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдПред

рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдЙрддреНрдкрддреНрддрд┐ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣реИ, рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ:
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, { crossdomain: true })

@ronnin рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЬрд┐рд╕ рджреВрд░рд╕реНрде рд╕реЗрд╡рд╛ рд╕реЗ рдЖрдк рдЕрдкрдирд╛ AJAX рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдЖрдкрдХреЗ рдбреЛрдореЗрди рд╕реЗ рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рди AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЛрдбрдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рддреЛ рдПрдХ рдЪреАрдЬ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдмрдирд╛рдирд╛ рд╣реИ (рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдПрдорд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдФрд░ рдлрд┐рд░ рд░рд┐рдореЛрдЯ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП AJAX рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрдирд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рджреВрд░рд╕реНрде рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреИрд╢рд┐рдВрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдкрдврд╝реЗрдВ, рд╕рдм рд▓реЛрдЧред
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдЙрд╕ рдПрдордбреАрдПрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рдВрджрд░реНрдн рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ рдФрд░ рдпрд╣ рд╕реАрдзреЗ рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЛрдбрдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХреНрдпрд╛ рдХрд░реВрдВ?

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рд╕реА рднреА рд╡рд┐рджреЗрд╢реА рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдбреЛрдореЗрди рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдХреНрд░реЙрд╕-рдореВрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдирд╛ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдПрдкреАрдЖрдИ рдХрд╣рддрд╛ рд╣реВрдВред

@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 рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдиреЛрдбрдЬ/рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рднреА рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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 рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?

@ рдЪреИрд▓реЗрдВрдЬрд░ 532 рдирд╣реАрдВ, рдлрд┐рд░ рднреА рдирд╣реАрдВред

рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдкреНрд░рдЪрд▓рд┐рдд рд╣реИред

рдореЗрд░реА рд╕рд▓рд╛рд╣: рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред

рдареАрдХ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдЖрдк рджреЗрдЦрд┐рдП, рдореИрдВ vuejs рдФрд░ Laravel рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ... рдореИрдВрдиреЗ рдЕрдкрдирд╛ Laravel рд╡реЗрдм рд░реВрдЯ php рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ:

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('====================================')
   })

рдФрд░ рд╡реЛрдЗрд▓рд╛, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рд▓рд╛рд░рд╡реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп:

рд╣реЗрдбрд░ ('рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐: *');

рд╡рд╛рдкрд╕реА рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдпрдВрддреНрд░рдХ рдпрд╛ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП
рдЙрджрд╛рд╣рд░рдг:
Route::get('post',function(){ $jav = Blog::all(); header('Access-Control-Allow-Origin: *'); return $jav; });
рдореЗрд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдЖрд╢рд╛ рд╣реИ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреАред

рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП vue.js (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ 8080) рдФрд░ рдлреНрд▓рд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ 5000)

рдореБрдЭреЗ рдмрд╕ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛрдб (рдкреЛрд░реНрдЯ 5000 рдкрд░ рдлреНрд▓рд╛рд╕реНрдХ) рдореЗрдВ рдЫреЛрдЯрд╛ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдореИрдВрдиреЗ рдлреНрд▓рд╛рд╕реНрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлреНрд▓рд╛рд╕реНрдХ-рд╕реАрдУрдЖрд░рдПрд╕ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред
рдкрд╣рд▓реЗ:

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)

рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ axios рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди API рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕реЗ axios.get рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИред

рд╣реЗрдбрд░ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рдХреЗ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. ред

рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=hi ред

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдХрд▓ рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЖрдЬ рдирд╣реАрдВ... рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдЦрд┐рд░ рдХреНрдпреЛрдВ

рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ _cors_ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЙрдХреНрд╕реА рдЕрдиреБрд░реЛрдз

рдЕрдкрдиреА 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

рдЙрдкрд░реЛрдХреНрдд рдЧрд┐рдЯ рдЙрджрд╛рд╣рд░рдг, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ

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
    }
  }
}

рд╕рдВрд╢реЛрдзрд┐рдд рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░реЙрдХреНрд╕реА рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрджрд▓ рджреЗрдЧрд╛ ..

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

рдЖрдк рдЗрд╕ рддрд░рд╣ 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

рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рдП рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдЬрдЧрд╣ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рд╣реИред рдЕрдиреБрдорддрд┐-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐-рдЙрддреНрдкрддреНрддрд┐* рдирд╛рдордХ рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рд░рд▓ рдФрд░ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реИред https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=hi

рдХреЗрд╡рд▓ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдХрд┐рд╕реА рддрд░рд╣ рдЙрдкрдпреЛрдЧреА: https://github.com/shalvah/cors-escape

Vue рдФрд░ axios рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ рд╣реИред

рд╕реБрдВрджрд░ 6445 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ/config/index.js. рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛/рдмрд┐рд▓реНрдб/webpack.dev.conf.js

рдЗрд╕рдореЗрдВ рдЖрдк рдкрд╛рддреЗ рд╣реИрдВ

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

рдЬреИрд╕рд╛ рдХрд┐ рд╕реБрдВрджрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдкреНрд░реЙрдХреНрд╕реАрдЯреЗрдмрд▓ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдмрджрд▓реЗрдВ

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

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ /рдИрд╡реЗрдВрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ http://localhost : 3000/events рдкрд░ рд░реВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ 'рдкрдерд░реАрд░рд╛рдЗрдЯ' рдирд╣реАрдВ, рд╕рд╛рдкреЗрдХреНрд╖ рдпреВрдЖрд░рдПрд▓ рд╡рд╣реА рд╣реЛрдЧрд╛ред

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдкрдиреЗ 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)
      })
  }

рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред @рд╕реБрдВрджрд░6445 . рдХреЛ рдзрдиреНрдпрд╡рд╛рдж

рдЙрдореНрдореАрдж рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдВрдж рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХрднреА-рдХрднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдпрджрд┐ рдЖрдкрдХреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдпрд╛ рддреЛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред

рдпрд╣ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХрд╣рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рд╣реИред рд╕рднреА рдПрдкреАрдЖрдИ рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╡реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред

Axios рдХреЗ рдЕрдВрджрд░ crossDomain рдЬреИрд╕рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рдЧрд▓рдд рд╕реБрд░рд╛рдЧ рджреЗрдиреЗ/рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрд░реЛрдд-рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВред

рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ (рд╕реАрдУрдЖрд░рдПрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ рдЖрдкрдХреЛ рдПрдХреНрд╕рдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдмрдирд╛рдП рдмрд┐рдирд╛) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ред

рдпрд╣ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рдмреИрдВрдХ рдЦрд╛рддреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рдЙрдирдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рд╡рд╣реА рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдСрдк рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ)ред

рдЖрдк рдПрдХ CORS рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдФрд░ рдЙрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм (рдпрд╛рдиреА, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ) рдХреЛ рд╕реНрдХреНрд░реИрдк

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЗрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред

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

рдзрдиреНрдпрд╡рд╛рдж

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрд▓рд┐рдЪ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╣реИред рдЬрдм рдЖрдк рдбреЗрдЯрд╛ рдкрд░реЛрд╕рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдЙрддреНрдкрддреНрддрд┐ рдХреЛ * рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореВрд▓, рдПрдХреНрд╕-рдЕрдиреБрд░реЛрдзрд┐рдд-рд╕рд╛рде, рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░, рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕реНрд░реЛрдд: axios.get рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп CORS рддреНрд░реБрдЯрд┐

рдЗрди рдЙрддреНрддрд░реЛрдВ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛, рдЬреИрд╕реЗ:

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();
});`

рд╕реНрд░реЛрдд: рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬреЗрдПрд╕ рдкрд░ рдХреЙрд░реНрд╕

рдФрд░ рд╕рдм рдХреБрдЫ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ axios рдпрд╛ рдлреНрд░рдВрдЯрдПрдВрдб рдореЗрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ axios рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╣реЗрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдХрдореА рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдпрд╣ рдЕрдиреНрдп

CORS рдкреНрд░реАрдлреНрд▓рд╛рдЗрдЯ рд╕реЗ рдХреИрд╕реЗ рдмрдЪреЗрдВ
"рдиреЛ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдЙрддреНрдкрддреНрддрд┐ рд╣реЗрдбрд░" рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CORS рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
"рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреАред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╕реАрдУрдЖрд░рдПрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЧрд╛рдпрдм рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
" https://cors-anywhere.herokuapp.com/ "
рдореИрдВ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/Rob--W/cors-anywhere / ред

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

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

рдореИрдВ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ 4webm рдФрд░ 4chan-list-webm . рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЯрдХрд░рд╛ рдЧрдпрд╛ рдерд╛

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо @moot рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ

рдХреНрд░реЙрд╕рдбреЛрдореЗрди: рд╕рдЪ

рдореБрдЭреЗ рдмреИрдХрдПрдВрдб рд╕реАрдУрдЖрд░рдПрд╕ рдкрд░ рдкреЛрд░реНрдЯ '8080' рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред

рд╕реБрд░рдХреНрд╖рд┐рдд

рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдкреНрд░рд▓реЗрдЦрди: https://webpack.js.org/configuration/dev-server/#devserver -proxy

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд▓рд╛рд░реНрд╡рд╛ рдпрд╛ рд▓реБрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА barryvdh/laravel-cors рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ cors.php рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рд╣реЗрдбрд░, рдореЗрдердб рдФрд░ рдУрд░рд┐рдЬрд┐рдирд▓ рдкрд╛рд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ
'allowedOrigins' => ['*'], 'allowedHeaders' => ['*'], 'allowedMethods' => ['*'],
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдлрд╛рд░реА рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдмрд╕ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ >> рдЙрдиреНрдирдд рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдореЗрдиреВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдиреВ рд╕реЗ "рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рди рдкреНрд░рддрд┐рдмрдВрдз рдЕрдХреНрд╖рдо рдХрд░реЗрдВ" рдЪреБрдиреЗрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдореЗрдиреВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдиреВ рд╕реЗ "рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рддрд┐рдмрдВрдз рдЕрдХреНрд╖рдо рдХрд░реЗрдВ" рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдФрд░ OSX рдХреЗ рд▓рд┐рдП Chrome рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:

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

--user-data-dir OSX рдкрд░ Chrome 49+ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ

рд▓рд┐рдирдХреНрд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

$ google-chrome --disable-web-security
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрджрд┐ рдЖрдк AJAX рдпрд╛ JSON рдЬреИрд╕реЗ рджреЗрд╡ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдзреНрд╡рдЬ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

-тАУallow-file-access-from-files
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдЙрд╕ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ Chrome.exe рд╣реИ рдФрд░ рдЯрд╛рдЗрдк рдХрд░реЗрдВ

chrome.exe --disable-web-security
рдпрд╣ рдЙрд╕реА рдореВрд▓ рдиреАрддрд┐ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ рдПрдХ рдорд┐рд▓ рдЧрдпрд╛ - https://github.com/expressjs/cors
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛

рдореБрдЦреНрдп рдореБрджреНрджрд╛ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╣реИред

рдЬрдм рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ (рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдЙрд░реНрдл, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рджрдпрд╛ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдорд╛рдирдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рд░реЛрдХрдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реЗ рд╣реЛ рднреА рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╣реАрдВ рднреАред

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд░реНрд╡рд░ (рдЙрд░реНрдл рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ) рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдХреЛрдИ рднреА (рдЖрдкрдХреА рд╕рд░реНрд╡рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдпрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд░рд┐рд╡реЗрд╢ рдпрд╛ рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд╛рд╣рд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдЦреНрдд рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рдЖрдкрдХрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХрдо рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ / рдХреМрди рдЗрд╕рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдлрд╝реНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдХреБрдЫ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЖрдкрдХреЗ рдЖрдЧрдВрддреБрдХреЛрдВ/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдХреАрдордд рдкрд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдСрдл рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рд╡реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХрд╛ mydomain.com allyourdataarebelongtome.com рдкрд░ рдХреЗрд╡рд▓ рддрднреА рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред

рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрд░реЙрд╕ рдбреЛрдореЗрди рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдпрд╣ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореВрд▓ рдбреЛрдореЗрди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕ рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЬрд┐рд╕реЗ рдЖрдк рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕ рдХреНрд░реЙрд╕ рдбреЛрдореЗрди рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдзрд┐ рд╣реИред

@mddanishyusuf рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЗрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред

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

рдзрдиреНрдпрд╡рд╛рдж

рдзрдиреНрдпрд╡рд╛рдж! ;)

рдпрд╣рд╛рдБ рд╕реЗ: https://github.com/axios/axios рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ axios url рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг url рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдкреАрдЖрдИ рдмрдирд╛рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рддрд░рд╣ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рд╣реИ

axios.get('/sample/request')

рдлрд┐рд░ http://127.0.0.1 :8080/sample/request https://a.4cdn.org/ рдкрд░ рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛ рдФрд░ axios рдХреЛ json рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧрд╛ред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рд╣реИ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

https://github.com/axios/axios/issues/853#issuecomment -408218917 рдиреЗ fetch API рдФрд░ рдПрдХ .NET 4.5 рд╡реЗрдм API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз loclahost: 3000 рд╕реЗ loclahost: 8080 рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ CORS рдЬреИрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред рддреЛ рд╕рдорд╛рдзрд╛рди рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдирд╛ рдерд╛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рдЪрд▓реЗ рдЧрдП рд╣реИрдВред
рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЛрдВ

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдерд╛:
'http-рдкреНрд░реЙрдХреНрд╕реА-рдорд┐рдбрд▓рд╡реЗрдпрд░' рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдЖрдпрд╛рдд рдХрд░реЗрдВ
app.use ('/ api/**', рдкреНрд░реЙрдХреНрд╕реА ({рд▓рдХреНрд╖реНрдп: "http://localhost:8080"}));

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб (рдПрдХреНрд╕рдкреНрд░реЗрд╕) рдореЗрдВ 'рдХреЙрд░реНрд╕' рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реВрдВред

Daud:
рдПрдирдкреАрдПрдо рдХреЛрд░реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдлрд┐рд░ рдмрд╕ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ:

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

рдзрдиреНрдпрд╡рд╛рдж рдХреЗ @fernandoruch, рдпрд╣ рдореЗрд░рд╛ NodeJS рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛

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 core 2.1 рдФрд░ axios 0.18.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЕрдХреНрд╖ рдореЗрдВ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдЖрдкрдХреЗ рдмреИрдХ-рдПрдВрдб рд╕рд░реНрд╡рд░ рдореЗрдВ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдмреИрдХ-рдПрдВрдб рдкрд░ рдлреНрд▓рд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИ рдФрд░ Vue.JS рдореЗрдВ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдлреНрд▓рд╛рд╕реНрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд░рдиреА рдереА рд╡рд╣ рд╣реИ:

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

рдпрд╣ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЗ рдкрд╛рд╕ nginx рд╕реНрддрд░ рдкрд░ рдПрдХ рдХреНрд░реЙрд╕ рдореВрд▓ рдЕрдиреБрдорддрд┐ рд╕реВрдЪреА рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ , рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://chrome.google.com/webstore/detail/cors-toggle/omcncfnpmcabckcddookmnajignpffnh

рдореБрдЭреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ ..

рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдЬрдм рдореИрдВрдиреЗ рдбрд╛рд░реНрдХрд╕реНрдХреА рдореМрд╕рдо рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ axios.get() рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЬрдм рдореИрдВрдиреЗ рдбрд╛рд░реНрдХрд╕реНрдХреА рдХреЗ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рд╛, рддреЛ рдореБрдЭреЗ рдЗрд╕реА рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдорд┐рд▓рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рдХрд╣рдХрд░ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреА package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ (рдореИрдВ create-react-app рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ):

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

myKey рдореБрдЭреЗ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдХрд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рдПрдХ рд╕реБрдкрд░ рд╕рд░рд▓ рдлрд┐рдХреНрд╕ рдерд╛ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдИ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛рдПрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реА рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдПрдВред

рдзрдиреНрдпрд╡рд╛рдж @fernandoruch ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдРрдк.рдЬреЗрдПрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ

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 рд╕рдорд╛рди-рдореВрд▓ рдиреАрддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

рдореИрдВ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл jQuery рдХреЗ $.get рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╕реАрдУрдЖрд░рдПрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЧрд╛рдпрдм рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
" https://cors-anywhere.herokuapp.com/ "
рдореИрдВ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/Rob--W/cors-anywhere / ред

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

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

@yasincidem - рдЖрдк рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╣реАрд░рд╛ рд╣реИрдВред рдЪреАрдпрд░реНрд╕ - рдореИрдВрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдкреВрд░реЗ рд╡реЗрдм рдкрд░ рдХрдИ рдЯреНрд░реЗрд▓реНрд╕ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдЕрднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд╛рд░ рдХрд░ рдЖрдпрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рддреГрддреАрдп рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {withCredentials: true} (рдореЗрд░реЗ рдЕрдиреНрдп рдПрдкреАрдЖрдИ рд╕реЗ рдПрдХ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ) рдерд╛, рдореИрдВрдиреЗ рдмрд╕ {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

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╕реАрдУрдЖрд░рдПрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЧрд╛рдпрдм рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
" https://cors-anywhere.herokuapp.com/ "
рдореИрдВ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/Rob--W/cors-anywhere / ред

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

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

рдЕрд╕рд╛рдзрд╛рд░рдг рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!!

Axios . рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╣рдорд╛рд░рд╛ рд╕реЗрдЯрдЕрдк рд╡реЗрдмрдкреИрдХ + devServer (рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде) + axios рд╣реИ

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╣рдордиреЗ рдХреЗрд╡рд▓ '/ api' рдХреЗ рдмрдЬрд╛рдп axios рдореЗрдВ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ (рдкреНрд░реЙрдХреНрд╕реА рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдкрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ)

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реА рдЕрдкрдиреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдКрдкрд░ рдХреА рддрд░рд╣ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред 2 рджрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓реАред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ url рдкрддрд╛ рдкрд╛рд░реНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдм axios рдореЗрд░реЗ рдХреЛрдгреАрдп 7 . рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдлреНрд▓рд╛рд╕реНрдХ рдпрд╛ рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдореЗрдВ CORS рд╕рдХреНрд╖рдо рд╣реИред
рдпрд╣ рднреА рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рд╕рд╣реА рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдлрдВрд╕ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред
axios.get ('http://localhost:5000/jsonshow')
рддрдм (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => (рдпрд╣ рд╕рд░рдгреА = рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛))

" рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 3000 " рдХреЛ " http://localhost :300" рдореЗрдВ рдмрджрд▓реЗрдВ рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░рд╕рд╛рдЗрдб рдкрд░ рдХреЙрд░реНрд╕ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ)

" рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 3000 " рдХреЛ " http://localhost :300" рдореЗрдВ рдмрджрд▓реЗрдВ рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░рд╕рд╛рдЗрдб рдкрд░ рдХреЙрд░реНрд╕ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ)

рдпрджрд┐ рдЖрдк рдкреЛрд░реНрдЯ 300 рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рди рдХрд┐ 3000 рдкрд░ред

VueJS рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ vue.config.js рдирд╛рдордХ рдПрдХ рд╡рд┐рд▓реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреБрдЫ рдРрд╕рд╛ рдЬреЛрдбрд╝реЗрдВ

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

рдлрд┐рд░ рдЖрдкрдХрд╛ Axios рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

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

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╕реАрдУрдЖрд░рдПрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЧрд╛рдпрдм рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
" https://cors-anywhere.herokuapp.com/ "
рдореИрдВ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/Rob--W/cors-anywhere / ред

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

axios.get( ${'https://cors-anywhere.herokuapp.com/'}https://a.4cdn.org/a/threads.json )
рддрдм (рд░реЗрд╕ => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рд░реЗрд╕)
})

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕рдХреЛ рдЖрдЬрдорд╛рдУ :

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');

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдПрдкреАрдЖрдИ рдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╕реАрдУрдЖрд░рдПрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЧрд╛рдпрдм рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
" https://cors-anywhere.herokuapp.com/ "
рдореИрдВ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/Rob--W/cors-anywhere / ред

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

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

рдореЗрд░рд╛ рд╕рдордп рдмрдЪрд╛ рд░рд╣рд╛ рд╣реИ, рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@ronnin рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛? рд╕рдЪрдореБрдЪ? рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ ...
рдЬреАрдИрдЯреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ @ronnin рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рд╣реИ:
axios.get('https://world.openfoodfacts.org/api/v0/products', { crossdomain: true }) .then(function (response) { console.log(response.data); })

рдЕрдм 2019 рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдореИрдВ

рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
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. рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрди, рдпрджрд┐ рдЙрд╕реА рд╣реЛрд╕реНрдЯ рдкрд░ рдирд╣реАрдВ (рддрдерд╛рдХрдерд┐рдд: рдореВрд▓) рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░, рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд CORS рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд░реНрдлред рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ: рд╣реЛрд╕реНрдЯ (рдореВрд▓), рд╣реЗрдбрд░, рдореЗрдердбреНрд╕ рдЖрджрд┐ред
  2. рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдпрд╛ 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрд░реЛрдз-рд╡рд┐рдзрд┐' рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХрд░реНрд▓ рдХрд░рдирд╛, рд╡рд┐рдзрд┐ 'рд╡рд┐рдХрд▓реНрдк' рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЗрдЪреНрдЫрд┐рдд рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: 'GET', 'POST', рдЖрджрд┐ред
    рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 'рд╡рд┐рдХрд▓реНрдк' рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (nginx):
    ``` рдЧреНрд░реВрд╡реА
    рд╕реНрдерд╛рди / рджреВрд░рд╕реНрде-рд╕рдВрд╕рд╛рдзрди {
    рдЕрдЧрд░ ($request_method = 'рд╡рд┐рдХрд▓реНрдк') {
    add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐' $http_origin;
    add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ' 'рдбреАрдПрдирдЯреА, рдХреАрдк-рдЕрд▓рд╛рдЗрд╡, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ, рдПрдХреНрд╕-рдЕрдиреБрд░реЛрдзрд┐рдд-рд╕рд╛рде, рдЕрдЧрд░-рд╕рдВрд╢реЛрдзрд┐рдд-рдЪреВрдВрдХрд┐, рдХреИрд╢-рдХрдВрдЯреНрд░реЛрд▓, рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╛рдзрд┐рдХрд░рдг';
    add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐-рддрд░реАрдХреЗ' 'рд╡рд┐рдХрд▓реНрдк, рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ, рдкреБрдЯ рдХрд░реЗрдВ, рдкреИрдЪ рдХрд░реЗрдВ, рд╣рдЯрд╛рдПрдВ';
    add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдкреНрд░рдорд╛рдг-рдкрддреНрд░' рд╕рддреНрдп;
    add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдзрд┐рдХрддрдо-рдЖрдпреБ' 1728000; # 20рдбреА
    add_header 'Content-Type' 'text/plain charset=UTF-8';
    add_header 'Content-Length' 0;
   return 204;
  }
 // more ...

}
```

  1. рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-* рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп * рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
    рдореВрд▓реНрдп *, рдХрдИ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВред
    рдПред рдорд╛рди * рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдЙрддреНрдкрддреНрддрд┐, рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ, рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╡рд┐рдзрд┐рдпрд╛рдВ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдкреНрд░рдорд╛рдг-рдкрддреНрд░ = рд╕рддреНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХреБрдХреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ = рд╕рддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
    рдмреАред рдХреЗрд╡рд▓ * рдорд╛рдиреНрдп рд╣реИ, *.google.com рдЕрдорд╛рдиреНрдп рд╣реИ
  1. рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдХреБрдЫ рд╣реЗрдбрд░ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдЬреЛ рдЗрд╕рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдЧрд╛ред рдмрд╕ рд╣реЗрдбрд░ рдХреЛ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╣реЗрдбрд░ рдореЗрдВ рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЪреБрдиреЗрдВ

  2. рд╕рдорд╕реНрдпрд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдЖрдкрдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдк) рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  3. рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рджреЗрд╡ рд╕рд╛рдереА рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реИ

@ronnin : рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореЗрд░рд╛ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреБрдЫ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реАрдУрдЖрд░рдПрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдлреНрд░рдВрдЯ рдПрдВрдб рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ronnin : рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореЗрд░рд╛ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреБрдЫ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реАрдУрдЖрд░рдПрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдлреНрд░рдВрдЯ рдПрдВрдб рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╕рд░реНрд╡рд░ рдиреЗ CORS . рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ , рднрд▓реЗ рд╣реА рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

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

рдЙрдкрдпреЛрдЧ:

рдпреВрдЖрд░рдПрд▓ = https://cors-anywhere.herokuapp.com${url} ;
`

@ronnin : рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореЗрд░рд╛ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреБрдЫ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реАрдУрдЖрд░рдПрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдлреНрд░рдВрдЯ рдПрдВрдб рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЕрдЧрд░ рдореЗрд░рд╛ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреБрдЫ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реАрдУрдЖрд░рдПрд╕ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рд╕реАрдзреЗ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдЕрдиреБрд░реЛрдз (рдЙрд░реНрдлред AJAX рдЕрдиреБрд░реЛрдз) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рдВ!
рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдЖрдк рдкрд╛рд░рдВрдкрд░рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрд░реЛрдз рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ location.href, iframe, form.action

рдЕрдзрд┐рдХрддрд░, рд╣рдо рдПрдХ рд╕реНрд╡-рд╕реНрд╡рдпрдВ рдХрд╛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ (рдЬреИрд╕реЗ nginx) рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ CORS рд╕рдХреНрд╖рдо рдХрд┐рдП рдмрд┐рдирд╛ 3-rd рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡-рдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рд╣реЛрддрд╛ рд╣реИред
рд╣реЗрд░реЛрдХреВ рдРрдк,

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реЗрд▓реНрдлрд╝-рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рдХрд╛рд░ рдФрд░ AI рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА CORS . рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд╣реИрдВ

рдореИрдВ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕рдХреЗреЛрдХреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ;

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 рдиреАрддрд┐ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдФрд░ рдЕрднреА рднреА рдЕрдХреНрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднреА рднреА рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЖрдкрдХреЛ 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐' рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: '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 рдиреАрддрд┐ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдФрд░ рдЕрднреА рднреА рдЕрдХреНрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднреА рднреА рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрджреНрджрд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд╕ рдПрдХ рдХреБрд░реНрд╕реА рдкрд░ рдмреИрдареЗрдВ рдФрд░ рдПрдордбреАрдПрди рдкрд░ рд▓реЗрдЦ рдкрдврд╝реЗрдВ: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

рдореИрдВ

рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ, рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реА! рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!

рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдореЛрдмрд╛рдЗрд▓ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдкрд░ рдерд╛ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ axios рдкрд░ рд╣реБрдИ рдереАред рдлрд┐рд░ рдЬрдм рдореИрдВрдиреЗ рдХреЙрдлреА рд╢реЙрдк рдореЗрдВ рд╡рд╛рдИрдлрд╛рдИ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ CORB рдирд╣реАрдВ рдорд┐рд▓рд╛

рдореИрдВрдиреЗ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рдерд╛ред
URL рдореЗрдВ origin=* рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЧрдпрд╛ред

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

рдореИрдВрдиреЗ рдЗрд╕реЗ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛, рдмрд╛рд╣рд░реА URL рд╕реЗ $ajax рдФрд░ $get рдХреЗ рд╕рд╛рде GET рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдкреБрд░рд╛рдиреЗ jQuery рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рд╣реИред

рдЕрднреА 2021 рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдореИрдВ

рдПрдХреНрд╕рд┐рдпреЛрд╕ (0.18.0) рдФрд░ рдХреНрд░реЛрдо (75.0.3770.100) рд╕реЗ рдЬреИрдкрд┐рдпрд░ рд╡реЗрдмрд╣реБрдХ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди "рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╣реЗрдбрд░" -рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ рдЕрдиреБрд░реЛрдз рд╣реИ:

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

рдореБрдЭреЗ рдЕрд╕рдорд░реНрдерд┐рдд рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА:

CORS рдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз: рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдлрд╝реАрд▓реНрдб рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ Access-Control-Allow-Headers рджреНрд╡рд╛рд░рд╛ рдкреНрд░реАрдлрд╝реНрд▓рд╛рдЗрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ

image

рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реА рд╕рдордЭ рд╣реИ:

    1. рдЬреИрдкрд┐рдпрд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░" рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрд░реЛрдз-рд╣реЗрдбрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    1. рдкреНрд░реАрдлреНрд▓рд╛рдЗрдЯ рдСрдкреНрдЯ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рддрд░рд╣ "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░" рд╣реЗрдбрд░-рдЪреЗрдХ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк 2 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ? рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрд░реЛрдз-рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреИрдкрд┐рдпрд░ рдХреА


рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ axios рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрдо/рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ Zapier рдХреЗ рдЕрдВрдд рдореЗрдВ рдЦрд░рд╛рдм рд╕рдорд░реНрдерди рд╣реИред рдпреВрдЖрд░рдПрд▓ рдкреИрд░рд╛рдореНрд╕ рдХреЗ рд╕рд╛рде рдЬреАрдИрдЯреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ рдЕрдЧрд░ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╡реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдмрд╕ ol . рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
Var xhr = new XMLHTTPRequest() рдФрд░ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдХреНрд╖ рдХреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдЬрдорд╛рдПрдВред

рдХреНрдпрд╛ рдЖрдкрдХреА рдкреЛрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рд╡реЗрдмрд╣реБрдХ рдкрд░ рд╣реИ?

рдордВрдЧрд▓рд╡рд╛рд░, рдЬреВрди реирел, реирежрезреп, рей:реирен рдЕрдкрд░рд╛рд╣реНрди рдкреАрдЯ рд╢рдорд┐рддреНрдЬрд╝ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВ рдПрдХ рд╕рдорд╛рди "рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ" -рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдПрдХреНрд╕рд┐рдпреЛрд╕ (0.18.0) рдФрд░ рдХреНрд░реЛрдо рд╕реЗ рдЬреИрдкрд┐рдпрд░ рд╡реЗрдмрд╣реБрдХ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп
(75.0.3770.100)ред

рдореЗрд░рд╛ рдЕрдиреБрд░реЛрдз рд╣реИ:

axios.post ("https://hooks.zapier.com/hooks/catch/xxx/xxxx", { рдИрдореЗрд▓ });

рдореБрдЭреЗ рдЕрд╕рдорд░реНрдерд┐рдд рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА:

CORS рдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз: рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝реАрд▓реНрдб рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ
рдкреВрд░реНрд╡-рдЙрдбрд╝рд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ рджреНрд╡рд╛рд░рд╛

[рдЫрд╡рд┐: рдЫрд╡рд┐]
https://user-images.githubusercontent.com/3190970/60138000-9ccdda80-975d-11e9-8f6d-e47bcffe91f1.png

рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реА рд╕рдордЭ рд╣реИ:

-
1. рдЬреИрдкрд┐рдпрд░ рдХреЛ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХрдо рд╕реЗ рдХрдо "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░" рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрд░реЛрдз-рд╢реАрд░реНрд╖рд▓реЗрдЦ
-
1. рдореБрдЭреЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдкреНрд░реАрдлреНрд▓рд╛рдЗрдЯ рдСрдкреНрдЯ рдХреЗ рджреМрд░рд╛рди "рдХрдВрдЯреЗрдВрдЯ-рдЯрд╛рдЗрдк" рд╣реЗрдбрд░-рдЪреЗрдХред

рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк 2 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ? рдЬреИрдкрд┐рдпрд░ рдХреА рдЖрдо рд╕рдорд╕реНрдпрд╛рдПрдВ
рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрд░реЛрдз-рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
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=AHVHGUIDC6DW3YPEKZ2HHZTP4KLWHA5CNFSM4DIVKOX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW6012PLODNMVY-50K
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AHVHGUKX32PVCFPCZGRURD3P4KLWHANCNFSM4DIVKOXQ
.

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд╣реВрдВред

@imranimu рд╕рдорд╕реНрдпрд╛ рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ axios рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рдПрдкреАрдЖрдИ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ CORS рдЪреЗрдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

рдпрджрд┐ рдЖрдк рдЙрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА 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

рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдХреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдиреНрдп рдорд╛рд░реНрдЧреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ:

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)
});

рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдЕрд▓рдЧ рдореВрд▓ (рдбреЛрдореЗрди) рдкрд░ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рд░реНрд╡рд░ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реАрдлрд▓рд╛рдЗрдЯ рдЪреЗрдХ рднреЗрдЬрддрд╛ рд╣реИ (рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдкреЛрд╕реНрдЯ рдЖрджрд┐ рдирд╣реАрдВ)ред рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рд╣реИ - рдЬреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реИред рдпрджрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк 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 : * ... рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:

(рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ OPTIONS рд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз рдмрдВрдж рд╣реИ рдЬреЛ CORS рдХреЗ рдХрд╛рд░рдг рдЕрд╕реНрд╡реАрдХреГрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ

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 рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реАред
рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
"рдкреНрд░реЙрдХреНрд╕реА": "рдПрдкреАрдЖрдИ рдПрдбреНрд░реЗрд╕"
рдХрд┐ рдпрд╣ рдХреЛрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред

@IkarosFeitosa рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░реЙрдХреНрд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрдм рд╕рд░реНрд╡рд░ Access-Control-Allow-Origin: * рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ @zacharytyhacz рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗред

рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ:

  1. рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрддрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП * рдмрджрд▓реЗрдВред
  2. рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ axios рдЕрдиреБрд░реЛрдз рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди/рд╡рд┐рдХрд▓реНрдк рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ ...withCredentials: false рд╕реЗрдЯ рдХрд░реЗрдВред
  3. рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ axios рдЕрдиреБрд░реЛрдз рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди/рд╡рд┐рдХрд▓реНрдк рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдорд╛рдиреНрдп рдкреНрд░реЙрдХреНрд╕реА рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг)
proxy: {
    host: '127.0.0.1',
    port: 9000,
    auth: {
      username: 'mikeymike',
      password: 'rapunz3l'
    }

рдХреЛрдЗ рдкреНрд░рдЧрддрд┐? рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
image

image
рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдЯрд┐рдк рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:
image
CORS рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рд╕реАрдорд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд░рд┐рдЯрд░реНрди рдХреА рдЕрдиреБрдорддрд┐ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдХреЛрд░реНрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рдореБрдЭреЗ No 'Access-Control-Allow-Origin' header is present on the requested resource ред

рдореИрдВ рдПрдкреАрдЖрдИ рд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЙрд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдиреЛрдбрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд╣ рдкреЛрд╕реНрдЯ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред

рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд 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);
});

рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдиреЛрдбрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - OPTIONS рд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЧреБрдЧрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ


рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛: 4.16.3

рдирд╣реАрдВ, :) рд╡рд┐рдХрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рд╣рдо http рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
рдЬрдм рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рд░рд┐рд▓реАрдЬ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдо https рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
рдпрд╣ рдирд╣реАрдВ рд╣реБрдЖред
рддреЛ рдмрд╕ рдРрдб рдСрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ :

app.use (рдлрд╝рдВрдХреНрд╢рди (req, res, рдЕрдЧрд▓рд╛) {
res.header ('рдкрд╣реБрдБрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐', '*');
res.header ('рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рд╢реАрд░реНрд╖рд▓реЗрдЦ', 'рдореВрд▓, рдПрдХреНрд╕-рдЕрдиреБрд░реЛрдзрд┐рдд-рд╕рд╛рде, рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░, рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ');
рдЕрдЧрд▓рд╛();
});

рдпрд╣ рдореЗрд░реА рдЬрд┐рдВрджрдЧреА рдХрд╛ рд╣рд▓ рд╣реИ !!

рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ:

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 ' рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛)ред

рдореИрдВрдиреЗ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдордВрдЪреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ, рдПрдХреНрд╕рд┐рд╕ рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рдЧрдпрд╛ рд╣реИ

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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдФрд░...

axios рдореЗрд░реЗ koa-server рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ iris , рджреЛрдиреЛрдВ рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рдХреЛрд░реНрд╕-рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИрдВред

резрейрелрео

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕ рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рд╛ рдФрд░ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕ рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рд╛ рдФрд░ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕рдВрдкреВрд░реНрдг CORS рдореБрджреНрджрд╛ Axios рдирд╣реАрдВ рд╣реИ, рди рд╣реА рд╕реНрд╡рдпрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ред рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдпрд╛ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ 'рд╣реИрдХ' рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ рд╡рд╣ рд╕рд╣реА рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕ рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рд╛ рдФрд░ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕рдВрдкреВрд░реНрдг CORS рдореБрджреНрджрд╛ Axios рдирд╣реАрдВ рд╣реИ, рди рд╣реА рд╕реНрд╡рдпрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ред рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдпрд╛ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ 'рд╣реИрдХ' рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ рд╡рд╣ рд╕рд╣реА рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗред

рддреЛ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╕реАрдУрдЖрд░рдПрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ "рд╕рдлрд▓" рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдареАрдХ рд╣реИ, рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рд╢реЛрдз рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛ред

рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрд╣ рдПрдХ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдореБрджреНрджрд╛ рднреА рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред axios рдХреЛ рд╕рднреА рдЕрдЬреАрдм рдФрд░ рдХрд╖реНрдЯрдкреНрд░рдж CORS рдорд╛рдирдХреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╕рдВрджреЗрд╢: CORS header тАШAccess-Control-Allow-OriginтАЩ missing рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рдерд╛рд░ axios рдХрд╛ рд╕рд╣реА рдХрд╛рд░реНрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 4chan api рдХреЗ рд╕рд╛рде, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рд╕рдорд╕реНрдпрд╛ axios рдирд╣реАрдВ рд╣реИ, 4chan api рд╣реА рд╣реИ рдЬреЛ CORS рдорд╛рдирдХреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рд╣реЗрдбрд░ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреБрд░рд╛рдиреА рдЪрд╛рд▓ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдиреЗрдЧрд░ рдЬрдорд╛рд▓реАрдлрд╝рд░реНрдб рдХрд╛ рдПрдХ рдмреНрд▓реЙрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЯреНрд░рд┐рдХ рдХреИрд╕реЗ рдХрд░реЗрдВ: https://medium.com/js-dojo/how-to-deal-with-cors-error-on-vue-cli-3-d78c024ce8d3 рд╡реИрд╕реЗ , рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рдмреБрд░рд╛ рдЕрднреНрдпрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдореЗрдВ рдПрдПрд╕рдкреА рдиреЗрдЯ рдХреЛрд░ рдПрдкреАрдЖрдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рдкреНрд░реАрдлреНрд▓рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз" рднреЗрдЬ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рдг рд╣реИ рдЬреЛ рдореЗрд░рд╛ рд╕рд░реНрд╡рд░ рдерд╛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдХреНрд░реЛрдо рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЛ рдЗрддрдирд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╖реА рдард╣рд░рд╛рддрд╛ рд╣реИред

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рд╣реЗрдбрд░ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреБрд░рд╛рдиреА рдЪрд╛рд▓ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдиреЗрдЧрд░ рдЬрдорд╛рд▓реАрдлрд╝рд░реНрдб рдХрд╛ рдПрдХ рдмреНрд▓реЙрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЯреНрд░рд┐рдХ рдХреИрд╕реЗ рдХрд░реЗрдВ: https://medium.com/js-dojo/how-to-deal-with-cors-error-on-vue-cli-3-d78c024ce8d3 рд╡реИрд╕реЗ , рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рдмреБрд░рд╛ рдЕрднреНрдпрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдЗрди рдХреЙрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдВрднрд╡ рдорд╛рдорд▓рд╛ рд╣реИ? рдХрд┐ рдПрдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред

рддреЛ рдЗрди рдХреЙрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдВрднрд╡ рдорд╛рдорд▓рд╛ рд╣реИ? рдХрд┐ рдПрдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред

рдареАрдХ рд╣реИ ... рдЖрдк рдЙрд╕ рджреЛрд╕реНрдд рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдПрдкреАрдЖрдИ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рд▓реА рд╣реИ:
рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП: url = " http://localhost : 8080" рд╡рд┐рдзрд┐ = 'рдкреЛрд╕реНрдЯ'
рдореЗрд░реЗ Django рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП:
uesrItem = {'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛': 'xxx'}
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = JsonResponse (userItem)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ["рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐"] = " http://localhost :8080"
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ["рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдкреНрд░рдорд╛рдг-рдкрддреНрд░"] = 'рд╕рддреНрдп'
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ["рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рддрд░реАрдХреЗ"] = "рдкреЛрд╕реНрдЯ, рд╡рд┐рдХрд▓реНрдк"

рд╕рдорд╕реНрдпрд╛ axios рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд┐рд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ!

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдХреЛрдбрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЬреАрдИрдЯреА рд╡рд┐рдзрд┐ рдереА:

@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)

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдПрдкреАрдЖрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рдереА:

@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

рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреА рдЕрдХреНрд╖реАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:

{data: Array(4), status: 200, statusText: "OK", headers: {тАж}, config: {тАж},┬атАж}

рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЖрдк рд╕рднреА рдХрд┐рд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛!

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ axios рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рдЕрднреА рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкреВрдЫрд╛ рдЬрд┐рд╕рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╕реАрдУрдЖрд░рдПрд╕ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИред

рдпреЗ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

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

рдореИрдВрдиреЗ https://github.com/Rob--W/cors-anywhere рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдб рдореЗрдВ рдореИрдВ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкреВрдЫреВрдВрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдореЗрд░реЗ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП cors рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк CORS рдХреЛ рд╕реАрдзреЗ axios рдореЗрдВ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ CORS рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╣реИред

рдЖрдк рдпрд╛ рддреЛ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдЕрдкрдиреЗ рд▓рдХреНрд╖рд┐рдд рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдореЗрдВ Access-Control-Allow-Origin рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
  2. рдЕрдкрдиреЗ axios рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реЛрд╕реНрдЯрдирд╛рдо рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЗ рдореВрд▓ рд╕рд░реНрд╡рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рдЕрдкрдиреЗ рдореВрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдк рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪрд╛рд╣реЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреГрдкрдпрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред
рд╡рд╣ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рдЦ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдкрд░ cors рдЬреЛрдбрд╝реЗ рдФрд░ рд╣рд▓ рдХрд┐рдпрд╛ред :)

рдпрд╣ axios рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╣ рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ Django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдФрд░ рдЗрди рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдХреЙрд░реНрд╕ рдорд┐рдбрд▓рд╡рд┐рдпрд░ рдЬреЛрдбрд╝реЗрдВ

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

рдФрд░ CORS рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд░рд╣рд╛ рд╣реИред
(рд╕рднреА рдХреЗ рд▓рд┐рдП CORS рдХреА рдЕрдиреБрдорддрд┐)

CORS_ORIGIN_ALLOW_ALL = True

(рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдореВрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреЛ рдЗрд╕реЗ рд╕реАрдПрд╕рдЖрд░рдПрдл рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рдмрдирд╛ рджреЗрдЧрд╛)
рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдВ

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://support.google.com/chrome/thread/11089651?hl=hi

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рддрдХ рдЖрдк рд╕рдордЭ рдЧрдП рд╣реЛрдВрдЧреЗ рдХрд┐ рдпрд╣ Axios рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╣реЗрдбрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ CORS рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рднреА рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╣реЗрдбрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ, рддреЛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдореЗрдВ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рддрдХ рдЖрдк рд╕рдордЭ рдЧрдП рд╣реЛрдВрдЧреЗ рдХрд┐ рдпрд╣ Axios рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╣реЗрдбрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ CORS рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рднреА рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╣реЗрдбрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ, рддреЛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдореЗрдВ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП

рдореИрдВ 3 рдШрдВрдЯреЗ рд╕реЗ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛, рдЖрдЦрд┐рд░рдХрд╛рд░ рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдорд╛рди рдЬреЛрдбрд╝рд╛:

рдПрдЧ-рдХреЙрд░реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдХреЗрд╡рд▓ рдПрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП)

// ./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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдФрд░...

axios рдореЗрд░реЗ koa-server рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ iris , рджреЛрдиреЛрдВ рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рдХреЛрд░реНрд╕-рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИрдВред

резрейрелрео

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ

рдореИрдВ рдЯреЙрд░рдиреЗрдбреЛ рдФрд░ рд╡реБрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдореЗрд░реЗ рдмреИрдХрдПрдВрдб рдПрдб рдкрд░ рдПрдХреНрд╕рд┐рдпреЛрд╕ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА:

# 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
рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ
рдзрдиреНрдпрд╡рд╛рдж

рдореБрдЭреЗ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ
рдореЗрд░рд╛ рдХреЛрдб
рдЕрдХреНрд╖({
рд╡рд┐рдзрд┐: "рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ",
url: "http://localhost:4000/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛",
})
рддрдм (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛);
})
рдХреИрдЪ (рддреНрд░реБрдЯрд┐ => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐)
});
}
рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
' http://localhost :4000/users' рдореВрд▓ рд╕реЗ ' http://localhost :3000' рдкрд░ XMLHttpRequest рддрдХ рдкрд╣реБрдВрдЪ CORS рдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреА рдЧрдИ рд╣реИ: рдкреНрд░реАрдлреНрд▓рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдЪреЗрдХ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдирд╣реАрдВ 'рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓' -Allow-Origin' рд╣реЗрдбрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдкрд░ рдореМрдЬреВрдж рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдХрджрдо рд╕реЗ рдХрджрдо рд╕рдорд╛рдзрд╛рди рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

@albertpinto рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ axios рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЬрд┐рд╕ "рдмреИрдХрдПрдВрдб" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдЖрдк рдЧреВрдЧрд▓ рдореЗрдВ рд╕рд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред _enable cors рдХреА рддрд░рд╣ рдХреБрдЫ (рдЙрд╕ рднрд╛рд╖рд╛ рдпрд╛ рдврд╛рдВрдЪреЗ рдХреЛ рд░рдЦреЗрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ) _

@albertpinto рдЗрд╕ рдореЗрдЧрд╛ рдереНрд░реЗрдб рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣ рдЖрдкрдХреЗ рдЕрдВрдд рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб/рдлреНрд░рдВрдЯ-рдПрдВрдб рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╣реИ (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 4000)ред рд╕рд░реНрд╡рд░ рдХреЛ рдореВрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП CORS рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ:

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

рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛:

  1. cors npm рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: npm cors рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрдиреЗ рдмрд╛рдХреА рдиреЛрдб рд╕рд░реНрд╡рд░ рдкрд░ http://localhost: 4000)

рдпрд╣ рдЖрдкрдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд░ рднреА рдЬрд╛рддрд╛ рд╣реИ:
var cors = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('cors')
рд╡рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдПрдХреНрд╕рдкреНрд░реЗрд╕')
var cors = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('cors')
рд╡рд░ рдРрдк = рдПрдХреНрд╕рдкреНрд░реЗрд╕ ()
app.use(cors())

рд╕рднреА рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛!

// CORS рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╕ js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ cors рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдХрд░реНрд▓ рд╕реАрдУрдЖрд░рдПрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдирд┐рдпрдо рд╕реБрд░рдХреНрд╖рд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЙрди рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ рд╣реЗрдбрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрдиреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

FYI рдХрд░реЗрдВ, CORS - рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рдирд▓ рд░рд┐рд╕реЛрд░реНрд╕ рд╢реЗрдпрд░рд┐рдВрдЧред рдЪреВрдВрдХрд┐ рдЖрдкрдХрд╛ рдПрдкреАрдЖрдИ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ -

  1. 4chan рдХреЗ API рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдбреЛрдореЗрди рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХрд╛ рд╡реЗрдмрдкреЗрдЬ рд╣реИ рдпрд╛,
  2. рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@sunnykgupta
рдПрдХ рд╣реА рддрд░реНрдХ, рдПрдХ рд╣реА рд╢рд░реАрд░, рд▓реЗрдХрд┐рди рджреВрд░рд╕реНрде рдмреИрдХрдПрдВрдб рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп http рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз CORS рдмреНрд▓реЙрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЧреЛ рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЧреЛрд░рд┐рд▓реНрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдВ

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.рдкреИрдХреЗрдЬ.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', {
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {
'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐': '*',
'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рд╢реАрд░реНрд╖рд▓реЗрдЦ': 'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╛рдзрд┐рдХрд░рдг',
},
рдкреНрд░реЙрдХреНрд╕реА: {
рд╣реЛрд╕реНрдЯ: '104.236.174.88',
рдкреЛрд░реНрдЯ: 3128
}
}).рдлрд┐рд░ (рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ:' + рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдбреЗрдЯрд╛);
}).рдХреИрдЪ (рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐) {
рдЕрдЧрд░ (рддреНрд░реБрдЯрд┐ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (error.response.headers);
}
рдФрд░ рдЕрдЧрд░ (рддреНрд░реБрдЯрд┐ред рдЕрдиреБрд░реЛрдз) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рдЕрдиреБрд░реЛрдз);
}
рдЕрдиреНрдпрдерд╛ {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рд╕рдВрджреЗрд╢);
}
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рдХреЙрдиреНрдлрд┐рдЧ);
});

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░,
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдШрдВрдЯреЛрдВ рд▓рдЧ рдЧрдПред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реАрдУрдЖрд░рдПрд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛрдб рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╣реА рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдРрдкреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЛрдореЗрди рдкрд░ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗред рд╕рдорд╕реНрдпрд╛ рддрдм рд╢реБрд░реВ рд╣реБрдИ рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдереА рдЬрдм рд╣рдо рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ baseURL рдореЗрдВ axios рдЙрджрд╛рд╣рд░рдг рдФрд░ рдлрд┐рд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ GET рдпрд╛ POST рдХрд╣реАрдВ рд╕реЗ рдХреЙрд▓, axios baseURL рдФрд░ рдЕрдиреБрд░реЛрдз URL рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрд▓реИрд╢ / axios рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЫрд┐рдкреА рд╣реБрдИ рд╕рдорд╕реНрдпрд╛ рдереАред рдореЗрд░рд╛ рд▓рд╛рд░рд╡реЗрд▓ рд╕рд░реНрд╡рд░ рдЕрдиреБрдЧрд╛рдореА рд╕реНрд▓реИрд╢ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рдерд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ OPTIONS рдЕрдиреБрд░реЛрдз рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рд╕реЗ рдмрдЪреЗрдВред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдмрдЧ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

shaosh picture shaosh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghprod picture ghprod  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

emaincourt picture emaincourt  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

achingbrain picture achingbrain  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdpagley picture jdpagley  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ