First, this article by setting
Access-control-allow-originTo implement cross-domain.
For example: The domain name of the client is client.runoob.com, and the requested domain name is server.runoob.com.
If you use AJAX access directly, you will get the following error:
XMLHttpRequest cannot load http://server.runoob.com/server.php. No ' Access-control-allow-origin ' header is present on the requested resource. Origin ' http://client.runoob.com ' is therefore not allowed access.
1. Allow single domain access
To specify a domain name (http://client.runoob.com) for cross-domain access, simply add the following code to the header of the http://server.runoob.com/server.php file:header(' Access-control-allow-origin:http://client.runoob.com ');
2. Allow multiple domain names to be accessed
To specify multiple domain names (http://client1.runoob.com, http://client2.runoob.com, and so on) for cross-domain access, simply add the following code to the http://server.runoob.com/server.php file header:
$origin=Isset($_server[' Http_origin '])?$_server[' Http_origin '] : ; $allow _origin Span class= "pun" >= Array ( , ' http://client2.runoob.com ' ); if (in_array ( $origin , $allow _origin Header ( ' access-control-allow-origin: ' $origin ); }
/span>
3. Allow all domain names to access
To allow all domain access, simply add the following code to the header of the http://server.runoob.com/server.php file:header(' access-control-allow-origin:* ' );
Second,
Ajax initiated Jsonp cross-domain request
We can realize the cross-domain Ajax request through the Jsonp way of jquery, the service side PHP also needs to make corresponding processing, that is to say PHP this side must and front page to request and return data according to certain format.
Example: Front-end page initiates a JSONP request:
12345678910111213 |
$.ajax({
type:
"get"
,
data:
"random="
+Math.random(),
url:
"http://demo.jb51.net/phpajax/jsonp.php"
,
dataType:
"jsonp"
,
jsonp:
"callback"
,
success:
function
(data) {
console.log(data);
},
error:
function
() {
console.log(
‘Request Error.‘
);
}
});
|
We will find that there are dataType in the AJAX request parameters: "Jsonp" and Jsonp: "Callback", which indicates that I want to request JSONP, and there will be a callback callback return. Of course, we can also customize callback functions, such as Jsonpcallback: "Success_jsonpcallback"
can also be simply written as:
12345 |
jQuery.getJSON(‘http: //demo.jb51.net/phpajax/jsonp.php?callback=?",{ random: Math.random() }, function (data){ console.log(data); }); |
The PHP backend service code can be written like this (note the format returned by the output):
12345 |
$data =
array
(
‘rand‘ =>
$_GET
[
‘random‘
],
‘msg‘ =>
‘Success‘
);
echo $_GET
[
‘callback‘
].
‘(‘
.json_encode(
$data
).
‘)‘
;
|
PHP Ajax the best solution for cross-domain problems