Composer安装时握手失败的解决

在win10中安装Composer出现如下错误:

 

Connection Error [ERR_CONNECTION]: Unable to connect to getcomposer.org Request tohttps://getcomposer.org/installer failed with errors: SSL: Handshake timed out. Failed to enable crypto. Failed to open stream: operation failed

 

解决方法:

在php.ini中修改


<span class="pln">curl</span><span class="pun">.</span><span class="pln">cainfo</span><span class="pun">=</span><span class="str">/path/</span><span class="pln">to</span><span class="pun">/</span><span class="pln">ssl</span><span class="pun">-</span><span class="pln">certs</span><span class="pun">/</span><span class="pln">ca</span><span class="pun">-</span><span class="pln">bundle</span><span class="pun">.</span><span class="pln">crt
openssl</span><span class="pun">.</span><span class="pln">cafile</span><span class="pun">=</span><span class="str">/path/</span><span class="pln">to</span><span class="pun">/</span><span class="pln">ssl</span><span class="pun">-</span><span class="pln">certs</span><span class="pun">/</span><span class="pln">ca</span><span class="pun">-</span><span class="pln">bundle</span><span class="pun">.</span><span class="pln">crt

</span>

<span class="pln">ca</span><span class="pun">-</span><span class="pln">bundle</span><span class="pun">.</span><span class="pln">crt的内容从下面链接获取:
https://curl.haxx.se/ca/cacert.pem
########################################################
将内容保存到</span>
<span class="pln">ca</span><span class="pun">-</span><span class="pln">bundle</span><span class="pun">.</span><span class="pln">crt</span>

PHP采用GD绘制验证码

<?php
session_start();
vCode(5, 50); //5个数字,显示大小为50

function vCode($num = 5, $size = 20, $width = 0, $height = 0) {
!$width && $width = $num * $size * 4 / 5 + 5;
!$height && $height = $size + 10;
// 画图像
$im = imagecreatetruecolor($width, $height);
// 定义要用到的颜色
$back_color = imagecolorallocate($im, 235, 236, 237);
$boer_color = imagecolorallocate($im, 118, 151, 199);
$text_color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));

// 画背景
imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
// 画边框
imagerectangle($im, 0, 0, $width-1, $height-1, $boer_color);
// 画干扰线
for($i = 0;$i < 7;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);
}
// 画干扰点
for($i = 0;$i < 70;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
}
// 去掉了 0 1 O l 等
$str = “23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW”;
$code = ”;
// 画验证码
for ($i = 0; $i < $num; $i++) {
$fontcont=$str[mt_rand(0, strlen($str)-1)];
$code .= $fontcont;
$x=$i*$size * 4 / 5 + 5;
$y=rand($height/4,$height/2);
imagestring($im,5,$x,$y,$fontcont,$text_color);
}
$_SESSION[“VerifyCode”]=$code;
header(“Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate”);
header(“Content-type: image/png;charset=utf-8”);
imagepng($im);
imagedestroy($im);
}

?>

js中document的属性及方法

document.title //设置文档标题等价于HTML的title标签
document.bgColor //设置页面背景色
document.fgColor //设置前景色(文本颜色)
document.linkColor //未点击过的链接颜色
document.alinkColor //激活链接(焦点在此链接上)的颜色
document.vlinkColor //已点击过的链接颜色
document.URL //设置URL属性从而在同一窗口打开另一网页
document.fileCreatedDate //文件建立日期,只读属性
document.fileModifiedDate //文件修改日期,只读属性
document.charset //设置字符集 简体中文:gb2312
document.fileSize //文件大小,只读属性
document.cookie //设置和读出cookie

———————————————————————
常用对象方法

document.write() //动态向页面写入内容
document.createElement(Tag) //创建一个html标签对象
document.getElementById(ID) //获得指定ID值的对象
document.getElementsByName(Name) //获得指定Name值的对象
document.body.appendChild(oTag)
———————————————————————

body-主体子对象

document.body //指定文档主体的开始和结束等价于body>/body>
document.body.bgColor //设置或获取对象后面的背景颜色
document.body.link //未点击过的链接颜色
document.body.alink //激活链接(焦点在此链接上)的颜色
document.body.vlink //已点击过的链接颜色
document.body.text //文本色
document.body.innerText //设置body>…/body>之间的文本
document.body.innerHTML //设置body>…/body>之间的HTML代码
document.body.topMargin //页面上边距
document.body.leftMargin //页面左边距
document.body.rightMargin //页面右边距
document.body.bottomMargin //页面下边距
document.body.background //背景图片
document.body.appendChild(oTag) //动态生成一个HTML对象

常用对象事件

document.body.onclick=”func()” //鼠标指针单击对象是触发
document.body.onmouseover=”func()” //鼠标指针移到对象时触发
document.body.onmouseout=”func()” //鼠标指针移出对象时触发
———————————————————————
location-位置子对象

document.location.hash // #号后的部分
document.location.host // 域名+端口号//好像返回的是主机名localhost,没有返回端口号
document.location.hostname // 域名
document.location.href // 完整URL
document.location.pathname // 目录部分
document.location.port // 端口号
document.location.protocol // 网络协议(http:)
document.location.search // ?号后的部分
documeny.location.reload() //刷新网页
document.location.reload(URL) //打开新的网页
document.location.assign(URL) //打开新的网页
document.location.replace(URL) //打开新的网页
———————————————————————
selection-选区子对象
document.selection

例如:

<div>请选中这里的部分文字。</div>
<div><input type=”button” value=”请选中部分文字,然后点击这里执行 empty” onclick=”javascript:Foo();” /></div>
<script type=”text/javascript” language=”javascript”>
<!–
function Foo()
{
document.selection.empty();
}
–>
</script>

selection的createRange方法

document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象。

配合 execCommand,在 HTML 编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等。

这些好像都是只有在IE下才能实现。。

———————————————————————

images集合(页面中的图象)

a)通过集合引用
document.images //对应页面上的img标签
document.images.length //对应页面上img标签的个数
document.images[0] //第1个img标签
document.images[i] //第i-1个img标签

b)通过name属性直接引用
img name=”oImage”
document.images.oImage //document.images.name属性

c)引用图片的src属性
document.images.oImage.src //document.images.name属性.src

d)创建一个图象
var oImage
oImage = new Image()
document.images.oImage.src=”1.jpg”
同时在页面上建立一个img /标签与之对应就可以显示

———————————————————————-

forms集合(页面中的表单)

a)通过集合引用
document.forms //对应页面上的form标签
document.forms.length //对应页面上/formform标签的个数
document.forms[0] //第1个/formform标签
document.forms[i] //第i-1个/formform标签
document.forms[i].length //第i-1个/formform中的控件数
document.forms[i].elements[j] //第i-1个/formform中第j-1个控件

b)通过标签name属性直接引用
/formform name=”Myform”>input name=”myctrl”/>/form
document.Myform.myctrl //document.表单名.控件名

c)访问表单的属性
document.forms[i].name //对应form name>属性
document.forms[i].action //对应/formform action>属性
document.forms[i].encoding //对应/formform enctype>属性
document.forms[i].target //对应/formform target>属性

document.forms[i].appendChild(oTag) //动态插入一个控件
document.all.oDiv //引用图层oDiv
document.all.oDiv.style.display=”” //图层设置为可视
document.all.oDiv.style.display=”none” //图层设置为隐藏
document.getElementId(”oDiv”) //通过getElementId引用对象
document.getElementId(”oDiv”).style=””
document.getElementId(”oDiv”).display=”none”
/*document.all表示document中所有对象的集合
只有ie支持此属性,因此也用来判断浏览器的种类*/

图层对象的4个属性
document.getElementById(”ID”).innerText //动态输出文本
document.getElementById(”ID”).innerHTML //动态输出HTML
document.getElementById(”ID”).outerText //同innerText
document.getElementById(”ID”).outerHTML //同innerHTML

Apache开启多端口

1.在httpd.conf中添加新的监听端口:Listen 8080

2.  # Virtual hosts

  #虚拟主机 开启多端口 原先是注释掉的

  Include conf/extra/httpd-vhosts.conf

3.修改httpd-vhosts.conf内容,注意此文件的路径。

   新增如下内容:

<VirtualHost *:8080> 
   ServerAdmin webmaster@dummy-host.localhost 
  DocumentRoot "D:\Apache Software Foundation\apache-tomcat-6.0.33\webapps2" 
  ServerName localhost 
  ServerAlias localhost 
  ErrorLog "logs/dummy-host.localhost-error.log" 
  CustomLog "logs/dummy-host.localhost-access.log" common 
  <Directory "D:\Apache Software Foundation\apache-tomcat-6.0.33\webapps2"> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
  </Directory> 
</VirtualHost>

ajax之XMLHttpRequest在CHROME的测试

var hr=null;
function http(){
if(window.XMLHttpRequest)
hr = new XMLHttpRequest();
else hr = new ActiveXObject(“Microsoft.XMLHTTP”);
hr.onreadystatechange=function()
{

if(hr.readyState==1) console.log(“服务器连接已建立”);
if(hr.readyState==2) console.log(“请求已接受”);
if(hr.readyState==3) console.log(“请求处理中”);
if (hr.readyState==4 && hr.status==200)
{
console.log(“请求已完成,且响应已就绪”);
document.write(hr.responseText); }
}
hr.open(“GET”,”http://blog.sina.com.cn”,true);
hr.send();
}
http();

XMLHttpRequest 增强功能

来源:http://technet.microsoft.com/zh-cn/ie/hh673569

Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用引入了对于 XMLHttpRequest 对象的若干增强功能,能够为不断出现的标准提供更好的支持并且更容易支持常见的开发者方案。 这些方案包括:

  • 下载和上载图像、视频和音频等二进制文件(无需使用插件)。
  • 下载多媒体内容流(无需使用插件)。
  • 改进了对 XMLHttpRequest 操作状态的解读。
  • 改进了与其他浏览器的互操作性。

这些更改将在以下各节中详细介绍:

二进制对象的上载和下载

Internet Explorer 10 使 XMLHttpRequest 扩展为可支持二进制数据。 通过增加对 文件 API 规范的 Blob 接口的支持,此功能已部分完成。

当一个 XMLHttpRequest 对象的 responseType 属性被设置为“blob”时,与该请求关联的数据将作为二进制数据进行处理。 这会影响下载请求的响应属性的值(例如,GET)。

下面的示例演示如何使用 XMLHttpRequest 将图像下载到 Blob 对象,然后将结果分配到网页上的图像元素。


<span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> req = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">new</span> XMLHttpReqest(); 
xhr.open(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"GET"</span>, <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"download?name="</span> + name, true); 
xhr.responseType = <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"blob"</span>; 
xhr.onreadystatechange = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span> () <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span> (xhr.readyState == xhr.DONE) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> blob = xhr.reponse; 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> image = document.getElementById(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"my-image"</span>); 
    image.addEventListener(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"load"</span>, <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span> (evt) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
      URL.revokeObjectURL(evt.target.src); 
    <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
    image.src = URL.createObjectURL(blob); 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
xhr.send();

当下载请求的 responseType 属性被设置为 “ms-stream” 时,内容能够被即时处理。如以下示例所示。


<span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> xhr = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">new</span> XMLHttpReqest(); 
xhr.open(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"GET"</span>, <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"download?name="</span> + name, true); 
xhr.responseType = <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"ms-stream"</span>; 
xhr.onreadystatechange = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span> () <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span> (xhr.readyState == xhr.LOADING) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> stream = xhr.reponse; 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> video = document.getElementById(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"my-video"</span>); 
    video.addEventListener(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"loadeddata"</span>, <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span> (evt) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
      URL.revokeObjectURL(evt.target.src); 
    <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
    video.src = URL.createObjectURL(stream); 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
xhr.send();

彗星流支持

通过允许在上载对 XMLHttpRequest 请求的响应的同时读取 responseText 属性,Internet Explorer 10 可支持多段 HTTP 流(又称 彗星流),如以下示例所示:


xhr.open(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"GET"</span>, url); 
xhr.timeout = timeout; 
xhr.onreadystatechange = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span>() <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span> (<span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.readyState &gt;= <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">3</span> &amp;&amp; <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.status == <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">200</span>) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> content = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.responseText; 
    handleContent(content); 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
xhr.send();

在较早版本的 Windows Internet Explorer 中,只有在 readyState 属性被设置为“done”时,才能读取 responseText 属性。

请注意, responseText 属性将返回到目前为止响应读取的完整值。 如果你希望处理单个数据包(与接收到它们时一样),则可以使用 progress 事件(详见下一节)或跟踪在readyStateChange 事件的每个迭代中的 responseText 的长度,如以下示例所示。


xhr.open(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"GET"</span>, url); 
xhr.timeout = timeout; 
xhr.onreadystatechange = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span>() <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span> (<span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">typeof</span> <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.index == <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"undefined"</span>) 
    <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.index = <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">0</span>; 
     
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span> (<span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.readyState &gt;= <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">3</span> &amp;&amp; <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.status == <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">200</span>) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> content = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.responseText; 
    handleContent( content.substring(<span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.index) ) 
    <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.index = content.length; 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
xhr.send();

增强的事件支持

Internet Explorer 10 将 XMLHttpRequest 对象扩展为可支持下列在 XMLHttpRequest 级别 2 规范中定义的事件:

事件 描述

loadstart

在请求开始时触发。

progress

在请求发送或接收数据期间,在服务器指定的时间间隔触发。

abort

在请求被取消时触发,例如,在调用 abort() 方法时。

error

在请求失败时触发。

load

在请求成功完成时触发。

timeout

在作者指定的时间段已经结束时触发。

loadend

在请求完成时触发,无论请求是成功还是失败。

XMLHttpRequest 对象的事件处理遵循在 DOM 事件级别 3 规范和 进度事件规范中指定的模型,如以下示例所示。


<span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> xhr = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">new</span> XMLHttpRequest(); 
<span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> url = <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"some-url"</span>; 
 
xhr.timeout = <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">5000</span>; 
xhr.addEventListener(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"timeout"</span>, handleTimeout(evt), false); 
 
xhr.onprogress = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">function</span>(evt) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  handleEvent(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"data: "</span> + <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.responseText); 
  <span class="js__sl_comment" style="font-weight: inherit; font-style: inherit; color: green;">// Calculate progress </span> 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> str = <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">""</span>; 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span> (evt.lengthComputable) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> percent = <span class="js__num" style="font-weight: inherit; font-style: inherit; color: red;">100</span> * evt.loaded / evt.total; 
    str = percent + <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"%. Current total size: "</span> + <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.responseText.length); 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">else</span> <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    str = <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"Progress unknown. Current total size: "</span> + <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">this</span>.responseText.length; 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
  updateProgress(str); 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
xhr.open(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"GET"</span>, url); 
xhr.send();

XMLHttpRequest 的跨源资源共享 (CORS)

Internet Explorer 10 添加了与 XMLHttpRequest (XHR)对象相关的跨源资源共享 (CORS) 的支持。 根据 跨源资源共享规范中的定义,CORS 使用 HTTP 头启用跨域 Web 请求,这通常受到同一站点源策略的限制。

默认情况下,同一站点源策略会阻止网站从其他域的服务器中请求资源。但是,如果相应的管理员选择允许此类请求,则支持 XMLHttpRequest (XHR) 请求的 CORS 的浏览器就可以访问其他域的资源。

当一个网页发出 XHR 请求时,Internet Explorer 发送一个源头数据到目标服务器;该头数据包含请求的协议方案(http:// 或 https://)和发出请求的网页的主机名。 如果目标服务器批准了请求,它将返回一个 Access-Control-Allow-Origin 头数据,并允许请求被处理。

XMLHttpRequest 对象现在支持 withCredentials 属性,它允许 XHR 请求以包含授权机制。右关更多信息,请参阅 XMLHttpRequest 级别 2 规范。

withCredentials 属性可用于检测 CORS 支持,如以下示例所示。


<span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> url = <span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"http://contoso.com/services/"</span> 
<span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span>( window.XMLHttpRequest ) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">var</span> oReq = <span class="js__operator" style="font-weight: bold; font-style: inherit; color: #4169e1;">new</span> XMLHttpRequest(); 
  <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">if</span>( oReq.withCredentials == true ) <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
    oReq.open(<span class="js__string" style="font-weight: inherit; font-style: inherit; color: teal;">"GET"</span>, url, true); 
    oReq.onload = handleResponse(); 
    oReq.send( null ); 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">else</span> <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span> 
  <span class="js__sl_comment" style="font-weight: inherit; font-style: inherit; color: green;">// CORS not support.  Handle fallback</span> 
  <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span> <span class="js__statement" style="font-weight: bold; font-style: inherit; color: navy;">else</span> <span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">{</span>  
  <span class="js__sl_comment" style="font-weight: inherit; font-style: inherit; color: green;">// XMLHttpRequest not supported; handle fallback</span> 
<span class="js__brace" style="font-weight: bold; font-style: inherit; color: red;">}</span>