url地址跨域:当前url地址的域名与要跳转的url地址中的域名不一样
如果使用以下的ajax,请求参数类型设置为contentType:"appliaction/xml;charset=utf-8",请求类型设置为type: "POST"
<script type="text/javascript">
$(function(){
$(".submit").click(function(){
var xmlDocument = ‘<xml><a>123</a><b>123</b></xml>‘;
$.ajax({
type: "POST",
url:"url",
contentType:"appliaction/xml;charset=utf-8",
data: xmlDocument,
dataType:"xml",
success:function(data){
if (data.xml) {
//IE
alert(data.xml);
}
else {
//火狐
var oSerializer = new XMLSerializer();
alert(oSerializer.serializeToString(data));
}
},
error: function(e) {
alert(e);
}
});
});
});
</script>
请求正文为:
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
origin: null
Connection: keep-alive
其中,
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
两项会自动加上,并且请求方式改为OPTION,请求的参数会忽略
这两项是用于提醒服务器在接下来的请求中将会使用什么样的方法来发起请求
结论:当url跨域时,第一次请求会自动改为OPTION方式的请求用于探测后续真正需要发起的跨域 POST 请求对于服务器来说是否是安全可接受的,因为跨域提交数据对于服务器来说可能存在很大的安全问题。