Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ajax ¿çÓò£¬ÕâÓ¦¸ÃÊÇ×îÈ«µÄ½â¾ö·½°¸ÁË
 
  3332  次浏览      27
 2018-1-30 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ51cto ,¿çÓòÕâ¸ö´Ê¾ÍÒ»Ö±ÒÔºÜ¸ßµÄÆµÂÊÔÚÉí±ßÖØ¸´³öÏÖ£¬ËùÒÔÎÄÖÐÖ»Òª½²½âÁË¿çÓòµÄÏà¹ØÁ÷³Ì£¬°üÀ¨¸ÅÄîµÈµÈ

Ìâ¸Ù

¹ØÓÚ¿çÓò£¬ÓÐNÖÖÀàÐÍ£¬±¾ÎÄֻרעÓÚ ajaxÇëÇó¿çÓò(ajax¿çÓòÖ»ÊÇÊôÓÚä¯ÀÀÆ÷"ͬԴ²ßÂÔ"ÖеÄÒ»²¿·Ö£¬ÆäËüµÄ»¹ÓÐCookie¿çÓòiframe¿çÓò£¬LocalStorage¿çÓòµÈÕâÀï²»×ö½éÉÜ)£¬ÄÚÈÝ´ó¸ÅÈçÏ£º

ʲôÊÇajax¿çÓò

Ô­Àí

±íÏÖ(ÕûÀíÁËһЩÓöµ½µÄÎÊÌâÒÔ¼°½â¾ö·½°¸)

ÈçºÎ½â¾öajax¿çÓò

JSONP·½Ê½

CORS·½Ê½

´úÀíÇëÇó·½Ê½

ÈçºÎ·ÖÎöajax¿çÓò

http×¥°üµÄ·ÖÎö

һЩʾÀý

ʲôÊÇajax¿çÓò

ajax¿çÓòµÄÔ­Àí

ajax³öÏÖÇëÇó¿çÓò´íÎóÎÊÌâ,Ö÷ÒªÔ­Òò¾ÍÊÇÒòΪä¯ÀÀÆ÷µÄ¡°Í¬Ô´²ßÂÔ¡±,¿ÉÒԲο¼

ä¯ÀÀÆ÷ͬԴÕþ²ß¼°Æä¹æ±Ü·½·¨(ÈîÒ»·å)

CORSÇëÇóÔ­Àí

CORSÊÇÒ»¸öW3C±ê×¼£¬È«³ÆÊÇ"¿çÓò×ÊÔ´¹²Ïí"£¨Cross-origin resource sharing£©¡£ËüÔÊÐíä¯ÀÀÆ÷Ïò¿çÔ´·þÎñÆ÷£¬·¢³öXMLHttpRequestÇëÇ󣬴Ӷø¿Ë·þÁËAJAXÖ»ÄÜͬԴʹÓõÄÏÞÖÆ¡£

»ù±¾ÉÏĿǰËùÓеÄä¯ÀÀÆ÷¶¼ÊµÏÖÁËCORS±ê×¼,ÆäʵĿǰ¼¸ºõËùÓеÄä¯ÀÀÆ÷ajaxÇëÇó¶¼ÊÇ»ùÓÚCORS»úÖÆµÄ,Ö»²»¹ý¿ÉÄÜÆ½Ê±Ç°¶Ë¿ª·¢ÈËÔ±²¢²»¹ØÐĶøÒÑ(ËùÒÔ˵ÆäʵÏÖÔÚCORS½â¾ö·½°¸Ö÷ÒªÊÇ¿¼ÂǺǫ́¸ÃÈçºÎʵÏÖµÄÎÊÌâ)¡£

¹ØÓÚCORS£¬Ç¿ÁÒÍÆ¼öÔĶÁ £º¿çÓò×ÊÔ´¹²Ïí CORS Ïê½â(ÈîÒ»·å)(http://www.ruanyifeng.com/blog/2016/04/cors.html)

ÁíÍ⣬ÕâÀïÒ²ÕûÀíÁËÒ»¸öʵÏÖÔ­Àíͼ(¼ò»¯°æ):

ÈçºÎÅжÏÊÇ·ñÊǼòµ¥ÇëÇó?

ä¯ÀÀÆ÷½«CORSÇëÇó·Ö³ÉÁ½Àࣺ¼òµ¥ÇëÇó£¨simple request£©ºÍ·Ç¼òµ¥ÇëÇó£¨not-so-simple request£©¡£Ö»ÒªÍ¬Ê±Âú×ãÒÔÏÂÁ½´óÌõ¼þ£¬¾ÍÊôÓÚ¼òµ¥ÇëÇó¡£

ÇëÇó·½·¨ÊÇÒÔÏÂÈýÖÖ·½·¨Ö®Ò»£ºHEAD¡¢GET¡¢POST¡£

HTTPµÄÍ·ÐÅÏ¢²»³¬³öÒÔϼ¸ÖÖ×ֶΣº

Accept

Accept-Language

Content-Language

Last-Event-ID

Content-Type(Ö»ÏÞÓÚÈý¸öÖµapplication/x-www-form-urlencoded¡¢ multipart/form-data¡¢text/plain)

·²ÊDz»Í¬Ê±Âú×ãÉÏÃæÁ½¸öÌõ¼þ£¬¾ÍÊôÓڷǼòµ¥ÇëÇó¡£

ajax¿çÓòµÄ±íÏÖ

˵ʵ»°£¬µ±³õÕûÀí¹ýһƪÎÄÕ£¬È»ºó×÷ΪÁËÒ»¸ö½â¾ö·½°¸£¬µ«ÊǺóÀ´·¢ÏÖÈÔÈ»ÓкܶàÈË»¹ÊDz»»á¡£ÎÞÄÎÖ»ÄܺÄʱÓÖºÄÁ¦µÄµ÷ÊÔ¡£È»¶ø¾ÍËãÊÇÎÒÀ´·ÖÎö£¬Ò²Ö»»á¸ù¾Ý¶ÔÓ¦µÄ±íÏÖÀ´ÅжÏÊÇ·ñÊÇ¿çÓò£¬Òò´ËÕâÒ»µãÊǺÜÖØÒªµÄ¡£

ajaxÇëÇóʱ£¬Èç¹û´æÔÚ¿çÓòÏÖÏ󣬲¢ÇÒûÓнøÐнâ¾ö£¬»áÓÐÈçϱíÏÖ¡£(×¢Ò⣬ÊÇajaxÇëÇó£¬Ç벻Ҫ˵ΪʲôhttpÇëÇó¿ÉÒÔ£¬¶øajax²»ÐУ¬ÒòΪajaxÊǰéËæ×Å¿çÓòµÄ£¬ËùÒÔ½ö½öÊÇhttpÇëÇóokÊDz»ÐеÄ)

×¢Ò⣺¾ßÌåµÄºó¶Ë¿çÓòÅäÖÃÇë¿´Ìâ¸ÙλÖá£

µÚÒ»ÖÖÏÖÏó

No'Access-Control-Allow-Origin'headerispresent on the requested resource,²¢ÇÒ Theresponse had HTTP status code404

³öÏÖÕâÖÖÇé¿öµÄÔ­ÒòÈçÏ£º

±¾´ÎajaxÇëÇóÊÇ¡°·Ç¼òµ¥ÇëÇó¡±,ËùÒÔÇëÇóǰ»á·¢ËÍÒ»´ÎÔ¤¼ìÇëÇó(OPTIONS)

·þÎñÆ÷¶Ëºǫ́½Ó¿ÚûÓÐÔÊÐíOPTIONSÇëÇó,µ¼ÖÂÎÞ·¨ÕÒµ½¶ÔÓ¦½Ó¿ÚµØÖ·

½â¾ö·½°¸: ºó¶ËÔÊÐíoptionsÇëÇó

µÚ¶þÖÖÏÖÏó

No'Access-Control-Allow-Origin'headerispresent on the requested resource,²¢ÇÒ Theresponse had HTTP status code405

ÕâÖÖÏÖÏóºÍµÚÒ»ÖÖÓÐÇø±ð,ÕâÖÖÇé¿öÏ£¬ºǫ́·½·¨ÔÊÐíOPTIONSÇëÇó,µ«ÊÇһЩÅäÖÃÎļþÖÐ(Èç °²È«ÅäÖÃ),×èÖ¹ÁËOPTIONSÇëÇó,²Å»áµ¼ÖÂÕâ¸öÏÖÏó

½â¾ö·½°¸£ººó¶Ë¹Ø±Õ¶ÔÓ¦µÄ°²È«ÅäÖÃ

µÚÈýÖÖÏÖÏó

No'Access-Control-Allow-Origin'headerispresent on the requested resource,²¢ÇÒ status200

ÕâÖÖÏÖÏóºÍµÚÒ»Öֺ͵ڶþÖÖÓÐÇø±ð,ÕâÖÖÇé¿öÏ£¬·þÎñÆ÷¶Ëºǫ́ÔÊÐíOPTIONSÇëÇó,²¢ÇÒ½Ó¿ÚÒ²ÔÊÐíOPTIONSÇëÇó,µ«ÊÇÍ·²¿Æ¥Åäʱ³öÏÖ²»Æ¥ÅäÏÖÏó

±ÈÈçoriginÍ·²¿¼ì²é²»Æ¥Åä,±ÈÈçÉÙÁËһЩͷ²¿µÄÖ§³Ö(Èç³£¼ûµÄX-Requested-WithÍ·²¿),È»ºó·þÎñ¶Ë¾Í»á½«response·µ»Ø¸øÇ°¶Ë,ǰ¶Ë¼ì²âµ½Õâ¸öºó¾Í´¥·¢XHR.onerror,µ¼ÖÂǰ¶Ë¿ØÖÆÌ¨±¨´í

½â¾ö·½°¸£ººó¶ËÔö¼Ó¶ÔÓ¦µÄÍ·²¿Ö§³Ö

µÚËÄÖÖÏÖÏó

heade contains multiple values'*,*'

±íÏÖÏÖÏóÊÇ£¬ºǫ́ÏìÓ¦µÄhttpÍ·²¿ÐÅÏ¢ÓÐÁ½¸ö Access-Control-Allow-Origin:*

˵ʵ»°£¬ÕâÖÖÎÊÌâ³öÏÖµÄÖ÷ÒªÔ­Òò¾ÍÊǽøÐпçÓòÅäÖõÄÈ˲»Á˽âÔ­Àí£¬µ¼ÖÂÁËÖØ¸´ÅäÖã¬È磺

³£¼ûÓÚ.netºǫ́(Ò»°ãÔÚweb.configÖÐÅäÖÃÁËÒ»´Îorigin,È»ºó´úÂëÖÐÓÖÊÖ¶¯Ìí¼ÓÁËÒ»´Îorigin(±ÈÈç´úÂëÊÖ¶¯ÉèÖÃÁË·µ»Ø*))

³£¼ûÓÚ.netºǫ́(ÔÚIISºÍÏîÄ¿µÄwebconfigÖÐͬʱÉèÖÃOrigin:*)

½â¾ö·½°¸(Ò»Ò»¶ÔÓ¦):

½¨Òéɾ³ý´úÂëÖÐÊÖ¶¯Ìí¼ÓµÄ*£¬Ö»ÓÃÏîÄ¿ÅäÖÃÖеļ´¿É

½¨Òéɾ³ýIISϵÄÅäÖÃ*£¬Ö»ÓÃÏîÄ¿ÅäÖÃÖеļ´¿É

ÈçºÎ½â¾öajax¿çÓò

Ò»°ãajax¿çÓò½â¾ö¾ÍÊÇͨ¹ýJSONP½â¾ö»òÕßCORS½â¾ö,ÈçÒÔÏÂ:(×¢Ò⣬ÏÖÔÚÒѾ­¼¸ºõ²»»áÔÙʹÓÃJSONPÁË£¬ËùÒÔJSONPÁ˽âϼ´¿É)

JSONP·½Ê½½â¾ö¿çÓòÎÊÌâ

jsonp½â¾ö¿çÓòÎÊÌâÊÇÒ»¸ö±È½Ï¹ÅÀϵķ½°¸(ʵ¼ÊÖв»ÍƼöʹÓÃ),ÕâÀï×ö¼òµ¥½éÉÜ(ʵ¼ÊÏîÄ¿ÖÐÈç¹ûҪʹÓÃJSONP,Ò»°ã»áʹÓÃJQµÈ¶ÔJSONP½øÐÐÁË·â×°µÄÀà¿âÀ´½øÐÐajaxÇëÇó)

ʵÏÖÔ­Àí

JSONPÖ®ËùÒÔÄܹ»ÓÃÀ´½â¾ö¿çÓò·½°¸,Ö÷ÒªÊÇÒòΪ <script> ½Å±¾ÓµÓпçÓòÄÜÁ¦,¶øJSONPÕýÊÇÀûÓÃÕâÒ»µãÀ´ÊµÏÖ¡£¾ßÌåÔ­ÀíÈçͼ

ʵÏÖÁ÷³Ì

JSONPµÄʵÏÖ²½Öè´óÖÂÈçÏÂ(²Î¿¼ÁËÀ´Ô´ÖеÄÎÄÕÂ)

¿Í»§¶ËÍøÒ³ÍøÒ³Í¨¹ýÌí¼ÓÒ»¸ö <script> ÔªËØ£¬Ïò·þÎñÆ÷ÇëÇóJSONÊý¾Ý£¬ÕâÖÖ×ö·¨²»ÊÜͬԴÕþ²ßÏÞÖÆ


function
addScriptTag(src) {

var
script = document.createElement(
'script'
);
script.setAttribute(
"type"
,
"text/javascript"
);
script.src = src;
document.body.appendChild(script);
}
window.onload =
function
() {
addScriptTag(
'http://example.com/ip?callback=foo'
);
}

function
foo(data) {
console.log(
'response data: '
+ JSON.stringify(data));
};

ÇëÇóʱ,½Ó¿ÚµØÖ·ÊÇ×÷Ϊ¹¹½¨³öµÄ½Å±¾±êÇ©µÄsrcµÄ,ÕâÑù,µ±½Å±¾±êÇ©¹¹½¨³öÀ´Ê±,×îÖÕµÄsrcÊǽӿڷµ»ØµÄÄÚÈÝ

·þÎñ¶Ë¶ÔÓ¦µÄ½Ó¿ÚÔÚ·µ»Ø²ÎÊýÍâÃæÌí¼Óº¯Êý°ü¹ü²ã

foo({

"test": "testData"
});

 

ÓÉÓÚ <script> ÔªËØÇëÇóµÄ½Å±¾£¬Ö±½Ó×÷Ϊ´úÂëÔËÐС£Õâʱ£¬Ö»Òªä¯ÀÀÆ÷¶¨ÒåÁËfooº¯Êý£¬¸Ãº¯Êý¾Í»áÁ¢¼´µ÷Óá£×÷Ϊ²ÎÊýµÄJSONÊý¾Ý±»ÊÓΪJavaScript¶ÔÏ󣬶ø²»ÊÇ×Ö·û´®£¬Òò´Ë±ÜÃâÁËʹÓÃJSON.parseµÄ²½Öè¡£

×¢Ò⣺һ°ãµÄJSONP½Ó¿ÚºÍÆÕͨ½Ó¿Ú·µ»ØÊý¾ÝÊÇÓÐÇø±ðµÄ£¬ËùÒÔ½Ó¿ÚÈç¹ûÒª×öJSONO¼æÈÝ£¬ÐèÒª½øÐÐÅжÏÊÇ·ñÓжÔÓ¦callback¹Ø¼ü×Ö²ÎÊý£¬Èç¹ûÓÐÔòÊÇJSONPÇëÇ󣬷µ»ØJSONPÊý¾Ý£¬·ñÔò·µ»ØÆÕͨÊý¾Ý¡£

ʹÓÃ×¢Òâ

»ùÓÚJSONPµÄʵÏÖÔ­Àí,ËùÒÔJSONPÖ»ÄÜÊÇ¡°GET¡±ÇëÇ󣬲»ÄܽøÐнÏΪ¸´ÔÓµÄPOSTºÍÆäËüÇëÇó£¬ËùÒÔÓöµ½ÄÇÖÖÇé¿ö£¬¾ÍµÃ²Î¿¼ÏÂÃæµÄCORS½â¾ö¿çÓòÁË(ËùÒÔÈç½ñËüÒ²»ù±¾±»ÌÔÌ­ÁË)

CORS½â¾ö¿çÓòÎÊÌâ

CORSµÄÔ­ÀíÉÏÎÄÖÐÒѾ­½éÉÜÁË£¬ÕâÀïÖ÷Òª½éÉܵÄÊÇ£¬Êµ¼ÊÏîÄ¿ÖУ¬ºó¶ËÓ¦¸ÃÈçºÎÅäÖÃÒÔ½â¾öÎÊÌâ(ÒòΪ´óÁ¿ÏîĿʵ¼ù¶¼ÊÇÓɺó¶Ë½øÐнâ¾öµÄ)£¬ÕâÀïÕûÀíÁËһЩ³£¼ûµÄºó¶Ë½â¾ö·½°¸:

PHPºǫ́ÅäÖÃ

PHPºǫ́µÃÅäÖü¸ºõÊÇËùÓкǫ́ÖÐ×îΪ¼òµ¥µÄ£¬×ñÑ­Èçϲ½Öè¼´¿É£º

µÚÒ»²½£ºÅäÖÃPhp ºǫ́ÔÊÐí¿çÓò

<?php
header(
'Access-Control-Allow-Origin: *'
);
header(
'Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept'
);
//Ö÷ҪΪ¿çÓòCORSÅäÖõÄÁ½´ó»ù±¾ÐÅÏ¢,OriginºÍheaders

µÚ¶þ²½£ºÅäÖÃApache web·þÎñÆ÷¿çÓò(httpd.confÖÐ)

ԭʼ´úÂë

<Directory />
AllowOverride none
Require all denied
</Directory>

¸ÄΪÒÔÏ´úÂë

<Directory />
Options FollowSymLinks
AllowOverride none
Order deny,allow
Allow from all
</Directory>

Node.jsºǫ́ÅäÖÃ(express¿ò¼Ü)

Node.jsµÄºǫ́ҲÏà¶ÔÀ´Ëµ±È½Ï¼òµ¥¾Í¿ÉÒÔ½øÐÐÅäÖá£Ö»ÐèÓÃexpressÈçÏÂÅäÖãº

app.all('*', function(req, res, next) {
res.header(
"Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1')
//Õâ¶Î½ö½öΪÁË·½±ã·µ»Øjson¶øÒÑ
res.header("Content-Type", "application/json;charset=utf-8");
if(req.method == 'OPTIONS') {
//ÈÃoptionsÇëÇó¿ìËÙ·µ»Ø
res.sendStatus(
200
);
}
else
{
next();
}
});

JAVAºǫ́ÅäÖÃ

JAVAºǫ́ÅäÖÃÖ»ÐèÒª×ñÑ­Èçϲ½Öè¼´¿É:

µÚÒ»²½£º»ñÈ¡ÒÀÀµjar°ü

ÏÂÔØ cors-filter-1.7.jar, java-property-utils-1.9.jar ÕâÁ½¸ö¿âÎļþ·Åµ½libĿ¼Ï¡£(·Åµ½¶ÔÓ¦ÏîÄ¿µÄwebcontent/WEB-INF/lib/ÏÂ)

µÚ¶þ²½£ºÈç¹ûÏîÄ¿ÓÃÁËMaven¹¹½¨µÄ,ÇëÌí¼ÓÈçÏÂÒÀÀµµ½pom.xmlÖÐ:(·ÇmavenÇëºöÊÓ)

<dependency>

<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>[ version ]</version>
</dependency>

ÆäÖа汾Ӧ¸ÃÊÇ×îеÄÎȶ¨°æ±¾,CORS¹ýÂËÆ÷

µÚÈý²½£ºÌí¼ÓCORSÅäÖõ½ÏîÄ¿µÄWeb.xmlÖÐ( App/WEB-INF/web.xml)

<!-- ¿çÓòÅäÖÃ-->

<filter>

<!-- The CORS filter with parameters -->

<filter-name>CORS</filter-name>

<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>

<!-- Note: All parameters are options, if omitted the CORS
Filter will fall back to the respective default values.
-->

<init-param>

<param-name>cors.allowGenericHttpRequests</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>cors.allowOrigin</param-name>

<param-value>*</param-value>

</init-param>

<init-param>

<param-name>cors.allowSubdomains</param-name>
<param-value>false</param-value>

</init-param>

<init-param>

<param-name>cors.supportedMethods</param-name>

<param-value>GET, HEAD, POST, OPTIONS</param-value>

</init-param>

<init-param>

<param-name>cors.supportedHeaders</param-name>

<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>

</init-param>

<init-param>

<param-name>cors.exposedHeaders
</param-name>
<!--ÕâÀï¿ÉÒÔÌí¼ÓһЩ×Ô¼ºµÄ±©Â¶Headers -->

<param-value>X-Test-1, X-Test-2</param-value>

</init-param>

<init-param>

<param-name>cors.supportsCredentials</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>cors.maxAge</param-name>

<param-value>3600</param-value>

</init-param>

</filter>

<filter-mapping>

<!-- CORS Filter mapping -->

<filter-name>
CORS
</filter-name>

<url-pattern>
/*
</url-pattern>

</filter-mapping>

Çë×¢Òâ,ÒÔÉÏÅäÖÃÎļþÇë·Åµ½web.xmlµÄÇ°Ãæ,×÷ΪµÚÒ»¸öfilter´æÔÚ(¿ÉÒÔÓжà¸öfilterµÄ)

µÚËIJ½£º¿ÉÄܵݲȫģ¿éÅäÖôíÎó(×¢Ò⣬ijЩ¿ò¼ÜÖÐ-Æ©È繫˾˽ÈË¿ò¼Ü£¬Óа²È«Ä£¿éµÄ£¬ÓÐʱºòÕâЩ°²È«Ä£¿éÅäÖûáÓ°Ïì¿çÓòÅäÖã¬Õâʱºò¿ÉÒÔÏȳ¢ÊԹرÕËüÃÇ)

NETºǫ́ÅäÖÃ

.NETºǫ́ÅäÖÿÉÒԲο¼Èçϲ½Ö裺

µÚÒ»²½£ºÍøÕ¾ÅäÖÃ

´ò¿ª¿ØÖÆÃæ°å£¬Ñ¡Ôñ¹ÜÀí¹¤¾ß,Ñ¡Ôñiis;ÓÒ¼üµ¥»÷×Ô¼ºµÄÍøÕ¾£¬Ñ¡Ôñä¯ÀÀ;´ò¿ªÍøÕ¾ËùÔÚĿ¼,ÓüÇʱ¾´ò¿ªweb.configÎļþÌí¼ÓÏÂÊöÅäÖÃÐÅÏ¢,ÖØÆôÍøÕ¾

Çë×¢Òâ,ÒÔÉϽØÍ¼½ÏÀÏ,Èç¹ûÅäÖÃÈÔÈ»³öÎÊÌâ,¿ÉÒÔ¿¼ÂÇÔö¼Ó¸ü¶àµÄheadersÔÊÐí,±ÈÈç:

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

µÚ¶þ²½£ºÆäËü¸ü¶àÅäÖã¬Èç¹ûµÚÒ»²½½øÐÐÁ˺ó£¬ÈÔÈ»ÓпçÓòÎÊÌ⣬¿ÉÄÜÊÇ

½Ó¿ÚÖÐÓÐÏÞÖÆËÀһЩÇëÇóÀàÐÍ(±ÈÈçдËÀÁËPOSTµÈ)£¬ÕâʱºòÇëÈ¥³ýÏÞ ÖÆ

½Ó¿ÚÖУ¬Öظ´ÅäÖÃÁË Origin:*£¬ÇëÈ¥³ý¼´¿É

IIS·þÎñÆ÷ÖУ¬Öظ´ÅäÖÃÁË Origin:*£¬ÇëÈ¥³ý¼´¿É

´úÀíÇëÇó·½Ê½½â¾ö½Ó¿Ú¿çÓòÎÊÌâ

×¢Ò⣬ÓÉÓÚ½Ó¿Ú´úÀíÊÇÓдú¼ÛµÄ£¬ËùÒÔÕâ¸ö½öÊÇ¿ª·¢¹ý³ÌÖнøÐеġ£

ÓëÇ°ÃæµÄ·½·¨²»Í¬£¬Ç°ÃæCORSÊǺó¶Ë½â¾ö£¬¶øÕâ¸öÖ÷ÒªÊÇǰ¶Ë¶Ô½Ó¿Ú½øÐдúÀí£¬Ò²¾ÍÊÇ:

ǰ¶ËajaxÇëÇóµÄÊDZ¾µØ½Ó¿Ú

±¾µØ½Ó¿Ú½ÓÊÕµ½ÇëÇóºóÏòʵ¼ÊµÄ½Ó¿ÚÇëÇóÊý¾Ý£¬È»ºóÔÙ½«ÐÅÏ¢·µ»Ø¸øÇ°¶Ë

Ò»°ãÓÃnode.js¼´¿É´úÀí

¹ØÓÚÈçºÎʵÏÖ´úÀí£¬ÕâÀï¾Í²»ÖصãÃèÊöÁË£¬·½·¨ºÍ¶à£¬Ò²²»ÄÑ£¬»ù±¾¶¼ÊÇ»ùÓÚnode.jsµÄ¡£

ËÑË÷¹Ø¼ü×Ö node.js, ´úÀíÇëÇó¼´¿ÉÕÒµ½Ò»´óƱµÄ·½°¸¡£

ÈçºÎ·ÖÎöajax¿çÓò

ÉÏÊöÒѾ­½éÉÜÁË¿çÓòµÄÔ­ÀíÒÔ¼°ÈçºÎ½â¾ö£¬µ«Êµ¼Ê¹ý³ÌÖУ¬·¢ÏÖÈÔÈ»ÓкܶàÈ˶ÔÕÕ×ÅÀàËÆµÄÎĵµÎÞ·¨½â¾ö¿çÓòÎÊÌ⣬Ö÷ÒªÌåÏÖÔÚ£¬Ç°¶ËÈËÔ±²»ÖªµÀʲôʱºòÊÇ¿çÓòÎÊÌâÔì³ÉµÄ£¬Ê²Ã´Ê±ºò²»ÊÇ£¬Òò´ËÕâÀïÉÔ΢½éÉÜÏÂÈçºÎ·ÖÎöÒ»¸öÇëÇóÊÇ·ñ¿çÓò:

×¥°üÇëÇóÊý¾Ý

µÚÒ»²½µ±È»ÊǵÃÖªµÀÎÒÃǵÄajaxÇëÇó·¢ËÍÁËʲôÊý¾Ý£¬½ÓÊÕÁËʲô£¬×öµ½ÕâÒ»²½²¢²»ÄÑ£¬Ò²²»ÐèÒª fiddlerµÈ¹¤¾ß£¬½ö»ùÓÚ Chrome¼´¿É

Chromeä¯ÀÀÆ÷´ò¿ª¶ÔÓ¦·¢ÉúajaxµÄÒ³Ãæ£¬ F12´ò¿ª DevTools

·¢ËÍajaxÇëÇó

ÓÒ²àÃæ°å-> NetWork-> XHR£¬È»ºóÕÒµ½¸Õ²ÅµÄajaxÇëÇó£¬µã½øÈ¥

ʾÀýÒ»(Õý³£µÄajaxÇëÇó)

ÉÏÊöÇëÇóÊÇÒ»¸öÕýÈ·µÄÇëÇó£¬ÎªÁË·½±ã£¬ÎÒ°Ñÿһ¸öÍ·ÓòµÄÒâ˼¶¼±íÃ÷ÁË£¬ÎÒÃÇ¿ÉÒÔÇåÎúµÄ¿´µ½£¬½Ó¿Ú·µ»ØµÄÏìӦͷÓòÖУ¬°üÀ¨ÁË

Access-Control-Allow-Headers: X-Requested-With,Content-Type,Accept
Access-Control-Allow-Methods: Get,Post,Put,OPTIONS
Access-Control-Allow-Origin: *

ËùÒÔä¯ÀÀÆ÷½ÓÊÕµ½ÏìӦʱ£¬ÅжϵÄÊÇÕýÈ·µÄÇëÇó£¬×ÔÈ»²»»á±¨´í£¬³É¹¦µÄÄõ½ÁËÏìÓ¦Êý¾Ý¡£

ʾÀý¶þ(¿çÓò´íÎóµÄajaxÇëÇó)

ΪÁË·½±ã£¬ÎÒÃÇÈÔÈ»ÄÃÉÏÃæµÄ´íÎó±íÏÖʾÀý¾ÙÀý¡£

Õâ¸öÇëÇóÖУ¬½Ó¿ÚAllowÀïÃæÃ»ÓаüÀ¨ OPTIONS£¬ËùÒÔÇëÇó³öÏÖÁË¿çÓò¡¢

Õâ¸öÇëÇóÖУ¬ Access-Control-Allow-Origin:*³öÏÖÁËÁ½´Î£¬µ¼ÖÂÁË¿çÓòÅäÖÃûÓÐÕýÈ·ÅäÖ㬳öÏÖÁË´íÎó¡£

¸ü¶à¿çÓò´íÎó»ù±¾¶¼ÊÇÀàËÆµÄ£¬¾ÍÊÇÒÔÉÏÈýÑùûÓÐÂú×ã(Headers,Allow,Origin)£¬ÕâÀï²»ÔÙһһ׸Êö¡£

ʾÀýÈý(Óë¿çÓòÎ޹صÄajaxÇëÇó)

µ±È»£¬Ò²²¢²»ÊÇËùÓеÄajaxÇëÇó´íÎó¶¼Óë¿çÓòÓйأ¬ËùÒÔÇë²»Òª»ìÏý£¬±ÈÈçÒÔÏÂ:

±ÈÈçÕâ¸öÇëÇó£¬ËüµÄ¿çÓòÅäÖÃûÓÐÒ»µãÎÊÌ⣬Ëü³ö´í½ö½öÊÇÒòΪrequestµÄ AcceptºÍresponseµÄ Content-Type²»Æ¥Åä¶øÒÑ¡£

¸ü¶à

»ù±¾É϶¼ÊÇÕâÑùÈ¥·ÖÎöÒ»¸öajaxÇëÇó£¬Í¨¹ý Chrome¾Í¿ÉÒÔÖªµÀÁË·¢ËÍÁËʲôÊý¾Ý£¬ÊÕµ½ÁËʲôÊý¾Ý£¬È»ºóÔÙÒ»Ò»±È¶Ô¾ÍÖªµÀÎÊÌâºÎÔÚÁË¡£

дÔÚ×îºóµÄ»°

¿çÓòÊÇÒ»¸öÀÏÉú³£Ì¸µÄ»°Ìâ£¬ÍøÉÏÒ²ÓдóÁ¿¿çÓòµÄ×ÊÁÏ£¬²¢ÇÒÓв»ÉÙ¾«Æ·(±ÈÈçÈîÒ»·åǰ±²µÄ)£¬µ«ÊÇÉíΪһ¸öǰ¶ËÈËÔ±²»Ó¦¸Ãdz³¢¶øÖ¹£¬¹Ê¶ø²ÅÓÐÁ˱¾ÎÄ¡£

   
3332 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì