首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTTPS到HTTPS请求

HTTPS到HTTPS请求
EN

Stack Overflow用户
提问于 2012-03-07 15:55:48
回答 3查看 7.3K关注 0票数 11

我在将JSONP请求从HTTPS站点发送到HTTP站点时遇到了问题。

我在https上有一个(非本地的)测试环境(带有有效的证书),在这里我能够成功地运行所有这些跨站点/“跨协议”请求(带有警告,但没有错误)。

控制台输出

代码语言:javascript
运行
复制
The page at https://my.test.environment/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704

然而,在生产中,(在Google,appspot子域上),Google阻止所有等待用户确认的请求。

Google控制台输出(特别注意阻止的文本):

代码语言:javascript
运行
复制
[blocked] The page at https://production.appspot.com/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704

我知道我所做的是不安全的,但是这个服务是由第三方提供的,到目前为止还没有SSL通信可用。我真的对此感到困惑,因为我不明白为什么在测试环境中(使用警告)而不是在appspot (Google )下工作。

我试图调查标题,但没有成功。

测试环境标头:

代码语言:javascript
运行
复制
Connection:Keep-Alive
Content-Encoding:gzip
Content-Language:es
Content-Length:2524
Content-Type:text/html;charset=utf-8
Date:Wed, 07 Mar 2012 15:48:30 GMT
Keep-Alive:timeout=15, max=100
Set-Cookie: cookie_info...
Vary:Accept-Encoding

APPSpot头:

代码语言:javascript
运行
复制
access-control-allow-credentials:false
access-control-allow-origin:*
cache-control:no-cache, must-revalidate
content-encoding:gzip
content-length:47890
content-type:text/html; charset=utf-8
date:Wed, 07 Mar 2012 14:52:02 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:Google Frontend
set-cookie: coookie_info....
status:200 OK
vary:Accept-Encoding
version:HTTP/1.1

我不知道这为什么要在测试环境上工作,同样的方法在APPSpot上被Google阻止了。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2012-09-18 16:28:37

apache代理将代表您向端点发出请求。您甚至可以有对服务的非jsonp请求(json、xml、图像、post、put、delete等),因为浏览器认为它在对同一个域执行请求。

您的non.secure.site vhost文件将包含以下内容

代码语言:javascript
运行
复制
ProxyRequests Off
ProxyPreserveHost On 
<Proxy *>
    Allow from all
</Proxy>
ProxyPass /appspot https://production.appspot.com/
ProxyPassReverse /appspot https://production.appspot.com/

一旦你设置好它,你就打电话给服务就像.

代码语言:javascript
运行
复制
http://non.secure.site/appspot/service?jsonCallback=jsonp1331132928704

Google proxypass获得更多信息

https://serverfault.com/questions/429404/help-me-understand-how-to-use-proxypass

票数 1
EN

Stack Overflow用户

发布于 2012-10-01 08:16:19

如果您没有其他选择,但使用不安全的第三方API,您可以自己考虑MITM这个API。

创建一个只能通过SSL访问的服务器端脚本,并充当标记和API之间的代理或转发器。这样,您就可以通过对数据执行自己的检查和验证来提高安全性,而且由于您将在SSL下提供服务,所以不会出现任何“混合内容”错误。

顺便说一句,我还没有测试过它,在GAE提供的Google证书下的网站总是有机会采取不同的行动。

希望我能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2012-12-31 07:29:01

在http和https之间做同样的事情,我也遇到了同样的问题。这是一个跨领域的问题。

您需要的最重要的事情是您正在使用的用于curl的服务器端页面必须设置一些标头,以便允许http到https连接。这个在下面..。

代码语言:javascript
运行
复制
header("Access-Control-Allow-Origin: your https url");
header("Access-Control-Allow-Methods: POST, GET");
header("Access-Control-Max-Age: 1728000");

header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control");
header("Connection: close");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9604784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档