请查看以下案例研究: -
有一个python web-api客户端说testapi.py正在提供给我们,它向tomcat 7运行web服务请求。现在: -
请求在JSON正文中有两个参数: - 用户名:测试 密码:测试
请求中必须传递三个标头: - 日期:哪个RFC 2822格式化日期,例如周四,2000年12月21日16:01:07 +0200 Content-Type:application / json; charset = utf-8 Content-MD5:对于这个属性,python web客户端执行以下步骤: - 生成参数数组的JSON主体 然后生成JSON正文的MD5哈希 然后生成MD5ed字符串的base64。
以下是为Content-MD5生成值的python代码: -
h=hashlib.new('md5')
h.update(body)
headers['Content-MD5']=base64.b64encode(h.digest())
问题陈述:出于某种原因,我们要在javaScript中创建Web客户端。我们遇到两个问题: -
案例1(CORS):默认情况下,Tomcat7不支持CORS,因此我们将tomcat的catalina.jar更新为版本7.0.42,它支持CORS并重新启动tomcat7服务器。我们还在web.xml中添加了过滤器。现在请求到达Web服务器并且事件日志显示400错误但在控制台网络错误中如下: -
"NetworkError: 400 Bad Request - https://xxx.xxx.xx.xxx/api/v1/sessions"
sessions
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://xxx.xxx.xx.xxx/api/v1/sessions. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://xxx.xxx.xx.xxx/api/v1/sessions. (Reason: CORS request failed).
这里要提到的一点是tomcat7,Web服务和javascript都在同一台机器上。
案例2(加密问题): 似乎Python中JSON主体的MD5哈希值与javaScript的MD5哈希值不同。我正在使用crypto-js google-code来生成MD5。请参阅this。
请帮助突破。我被困在这里。