JSONP完成HTTP和HTTPS之间的跨域访问

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用JSONP完成HTTPS跨域请求

前提条件

1.已配置本机java环境

2.已安装tomcat6.0

第一步使用HTTPS协议前期准备

进入命令提示符窗口(cmd) 输入以下命令

1.为服务器生成安全证书

命令:

Keytool -genkey -v -alias tomcat -keyalg RSA-keystore server.keystore

输入新密码:123456

您的名字与姓氏是什么?

[Unknown]:这里填写服务器所在的域名(如: 本机为localhost) 您的组织单位名称是什么?

[Unknown]:ysb

您的组织名称是什么?

[Unknown]:portal

您所在的城市或区域名称是什么?

[Unknown]:nj

您所在的州或省份名称是什么?

[Unknown]:js

该单位的两字母国家代码是什么

[Unknown]:en

N=localhost, OU=ysb, O=portal, L=js, ST=nj, C=en 正确吗?

[否]:如果跟你填写的信息一致则输入“Y“反之则为“N”。

说明:tomcat:别名

RSA:使用的加密方式

server.keystore:生成的服务器证书名(必须以’.keystore’为后缀名)

注意:这样服务器证书就生成了如果使用单向认证,那么下面生成客户端证书的步骤就不用了。

如果使用单向认证下面2,3,4步就不用了。

2.为客户端生成安全证书

命令:

Keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore client.p12 输入keystore密码:设置密码如:123456

再次输入新密码:123456

您的名字与姓氏是什么?

[Unknown]:localhost

您的组织单位名称是什么?

[Unknown]:ysb

您的组织名称是什么?

[Unknown]:ysb

您所在的城市或区域名称是什么?

[Unknown]:nj

您所在的州或省份名称是什么?

[Unknown]:js

该单位的两字母国家代码是什么

[Unknown]:en

CN=localhost, OU=ysb, O=ysb, L=nj, ST=js, C=en 正确吗?

[否]:如果跟你填写的信息一致则输入“Y“反之则为“N”。

说明:mykey:别名

PKCS12:以PKCS121格式生成文件

client.p12:生成的客户端证书文件

localhost:这里填本地IP或者localhost

3.将证书导出到证书文件。

命令:

Keytool -export -v -alias mykey-keystore client.p12 -storetype PKCS12 -storepass password -rfc -file client.cer

说明:password:为客户端生成证书的证书密码。

client.cer:导出后缀名为‘.cer’的证书文件(方便将客户端证书导入到服务器添加信任)

4.通过以上命令,客户端证书就被我们导出到“client.cer”文件了。下一步,是将该文件导入到服

务器的证书库,添加为一个信任证书:

Keytool -importcert -v -file client.cer -keystore server.keystore

输入keystore密码:客户端证书密码

再次输入新密码:重复

所有者:CN=localhost, OU=ysb, O=ysb, L=nj, ST=js, C=en

签发人:CN=localhost, OU=ysb, O=ysb, L=nj, ST=js, C=en

序列号:4d9d7980

有效期: Thu Apr 07 16:44:48 CST 2011 至Wed Jul 06 16:44:48 CST 2011

证书指纹:

MD5:72:2D:DD:20:2A:CA:3B:D0:E8:E3:5E:BF:90:FE:D0:83

SHA1:77:9E:35:98:83:C8:F4:64:7E:ED:A2:91:C7:4A:27:0A:C0:18:BE:4D 签名算法名称:SHA1withRSA

版本: 3

信任这个认证?[否]:y

认证已添加至keystore中

正在存储server.keystore]

说明:

client.cer:导出后缀名为‘.cer’的证书文件(方便将客户端证书导入到服务器添加

信任)

client.cer:转换后的客户端证书文件

server.keystore:服务器证书文件

注意:如果是单向认证则只需生成服务器证书即可

5.打开Tomcat根目录下的/conf/server.xml,找到如下配置段

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

/>

注意:属性clientAuth的属性值如果是双向认证则为true如果是单向认证则我false 默认为false

添加属性

单向认证:

keystoreFile="tomcat.keystore" keystorePass="password"

双向认证:

keystoreFile="tomcat.keystore" keystorePass="password"

truststoreFile="tomcat.keystore" truststorePass="password"

注意:双向认证双击client.p12文件按提示将证书导入浏览器

完成以上步骤就可以使用HTTPS协议了

测试:将访问项目的地址的协议手动改成HTTPS,端口改成8443。

说明:8443:在tomcat里https默认端口是8443(可以自己修改)

tomcat.keystore:生成的服务器证书存放路径

password:为服务器证书的密码

第二步使用JSONP完成跨域访问

使用Jquery的jQuery.getJSON(url, [data], [callback])函数发送跨域请求

例:

使用http协议时请求为:

$.post("http://localhost:8080/rcs/userAction!login.action",{account:cfg.account,password:cfg.pas

sword},cfg.callback,"json");

使用jsonp发送https协议请求

$.getJSON("https://localhost:8443/rcs/userAction!login.action?callback=?",{account:cfg.account

,password:cfg.password},cfg.callback);

注意:使用jQuery.getJSON(url, [data], [callback])发送跨域请求后,在返回json数据时必须以callback({“result”:”result”})这样的格式才能被解析,所以必须在后台手动编码将数据组装成这样的格式

相关文档
最新文档