ajaxクロスドメイン

2185 ワード

js ajaxクロスドメイン訪問報「No'Access-Coontrol-Origin'header is present on the requested reource.」エラーを解決します。
異なるポート番号間のアクセスを実現する際に、ドメイン横断エラー問題に遭遇しました。
前言
からhttp://www.a.com/test.html ドメイン間の要求を開始し、要求された住所は以下の通りである。http://www.b.com/test.PH 現地でajaxでドメインをまたいで訪問して時報に間違っています。1.XMLttpRequest cannotloadhttp://www.zjblogs.com/. No'Access-Coontrol-Origin'2.header is present on the requested reource.Origin'null's therefore not allowed access.
問題の原因
W 3 C標準ではHTTPドメイン間要求がこのように実現されています。Cross-Origin Resource Sharingは簡単に言えば、ドメインをまたぐ対象サーバは一連のHeadersに戻ります。これらのHeadersによってドメイン横断に同意するかどうかを制御します。
Access-Control-Allow-Origin HTTP Response Header

Access-Control-Max-Age HTTP Response Header

Access-Control-Allow-Credentials HTTP Response Header

Access-Control-Allow-Methods HTTP Response Header

Access-Control-Allow-Headers HTTP Response Header

Origin HTTP Request Header

Access-Control-Request-Method HTTP Request Header

Access-Control-Request-Headers HTTP Request Header
RequestカバンとReponseカバンの中にいくつかあります。その中で一番敏感なのはAccess-Coontrol-OriginというHeaderです。彼はW 3 C標準でこのクロスドメイン要求が通るかどうかをチェックします。Access Control Check)
解決方法
1、javaサーバ端のfilterまたはservletに追加します。
response.setHeader("Access-Control-Allow-Origin", "*");
2、要求されたurlがaspxページであれば、aspxページにコードを追加する必要があります。
Response.AddHeader("Access-Control-Allow-Origin", "*");
3、要求されたurlがPHPページであれば
header("Access-Control-Allow-Origin: *");
4、要求されたurlが静的なhtmlページであれば、ページにmetaタグコードを追加する必要がある:

「Access-Coontrol-Allow-Origin」はドメインをまたぐアクセスを許可することを表し、「*」はすべてのソースにドメインをまたぐアクセスを許可することを示し、ここでは特定のドメイン名またはipに置き換えることもできる。
このような方法はウェブサイトの所有者以外にはできないことは明らかです。それにこの方式はCSRF攻撃を受けやすいです。まだだめなら、これらを全部足しましょう。
//              
header('Access-Control-Allow-Origin:*');   
//        
header('Access-Control-Allow-Methods:POST');   
//         
header('Access-Control-Allow-Headers:x-requested-with,content-type'); 
参考:https://blog.csdn.net/idomyway/article/details/79572973