рдореИрдВ рдПрдХ рдмреЛрд░реНрдб рд╕реЗ рдзрд╛рдЧреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 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).
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд╡рд╣реА рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдХрд░реНрд▓ рд╕реАрдУрдЖрд░рдПрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдирд┐рдпрдо рд╕реБрд░рдХреНрд╖рд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЬрдм рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЙрди рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ рд╣реЗрдбрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрдиреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
FYI рдХрд░реЗрдВ, CORS - рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рдирд▓ рд░рд┐рд╕реЛрд░реНрд╕ рд╢реЗрдпрд░рд┐рдВрдЧред рдЪреВрдВрдХрд┐ рдЖрдкрдХрд╛ рдПрдкреАрдЖрдИ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ -
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ:
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 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ
рдЗрд╕рдореЗрдВ рдЖрдк рдкрд╛рддреЗ рд╣реИрдВ
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
рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ:
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
// more ...
}
```
рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдХреБрдЫ рд╣реЗрдбрд░ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдЬреЛ рдЗрд╕рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдЧрд╛ред рдмрд╕ рд╣реЗрдбрд░ рдХреЛ рдПрдХреНрд╕реЗрд╕-рдХрдВрдЯреНрд░реЛрд▓-рдЕрдиреБрдорддрд┐-рд╣реЗрдбрд░ рдореЗрдВ рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЪреБрдиреЗрдВ
рд╕рдорд╕реНрдпрд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдЖрдкрдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдк) рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рджреЗрд╡ рд╕рд╛рдереА рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реИ
@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 рджреНрд╡рд╛рд░рд╛ рдкреНрд░реАрдлрд╝реНрд▓рд╛рдЗрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ
рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реА рд╕рдордЭ рд╣реИ:
рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк 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 рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗред
рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ:
*
рдмрджрд▓реЗрдВред...withCredentials: false
рд╕реЗрдЯ рдХрд░реЗрдВредproxy: {
host: '127.0.0.1',
port: 9000,
auth: {
username: 'mikeymike',
password: 'rapunz3l'
}
рдХреЛрдЗ рдкреНрд░рдЧрддрд┐? рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдЯрд┐рдк рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:
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 рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╣реИред
рдЖрдк рдпрд╛ рддреЛ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Access-Control-Allow-Origin
рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВредрдХреГрдкрдпрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред
рд╡рд╣ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рдЦ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдкрд░ 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
рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛:
рдпрд╣ рдЖрдкрдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд░ рднреА рдЬрд╛рддрд╛ рд╣реИ:
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 - рдХреНрд░реЙрд╕ рдУрд░рд┐рдЬрд┐рдирд▓ рд░рд┐рд╕реЛрд░реНрд╕ рд╢реЗрдпрд░рд┐рдВрдЧред рдЪреВрдВрдХрд┐ рдЖрдкрдХрд╛ рдПрдкреАрдЖрдИ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ -
- 4chan рдХреЗ API рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдбреЛрдореЗрди рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХрд╛ рд╡реЗрдмрдкреЗрдЬ рд╣реИ рдпрд╛,
- рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
@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
рдЕрдиреБрд░реЛрдз рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рд╕реЗ рдмрдЪреЗрдВред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдмрдЧ рдирд╣реАрдВ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд╣реВрдВ...