【问题标题】:SSL CORS not working with Zend GuardSSL CORS 不适用于 Zend Guard
【发布时间】:2012-11-10 01:46:47
【问题描述】:

我已将所有内容添加到我的 Apache htaccess:

标头集 Access-Control-Allow-Headers: X-Requested-With
标头集访问控制允许方法:选项
标头添加访问控制允许方法:GET
标头添加访问控制允许方法:POST
标头添加 Access-Control-Allow-Headers: Content-Type
标头添加访问控制允许标头:深度
标头添加 Access-Control-Allow-Headers: User-Agent
标头添加 Access-Control-Allow-Headers: X-File-Size
标头添加 Access-Control-Allow-Headers: X-Requested-With
标头添加 Access-Control-Allow-Headers: If-Modified-Since
标头添加 Access-Control-Allow-Headers: X-File-Name
标头添加 Access-Control-Allow-Headers: Cache-Control
标头集 Access-Control-Allow-Origin:http://mysite.com
标头添加 Access-Control-Allow-Origin:https://mysite.com
标头集 Access-Control-Allow-Credentials: true

我将此添加到我的 jquery $.ajax 中:

xhrFields: {
    withCredentials: 真
}

绝对没有任何作用。

我正在使用 $.ajax

类型:'POST',
数据类型:'json'

我认为通过设置上面所有这些标题,我可以做 json 而不是 jsonp(请不要 jsonp。除了 jsonp 之外的任何东西。我无法成功触发。please.god.no)

我已经到了极限。我得到了很好的 ole

XMLHttpRequest 无法加载 https://mysite.com/aDirectory/aSecureFile.php。 Access-Control-Allow-Origin 不允许来源http://mysite.com

请帮忙。我要死在这里了。我保证我到处都看过,哦,我到处都看过吗。

提前非常感谢!

清晰度

我的标题都出现了。我可以在我的响应标题中看到它们,但我仍然收到上述错误。服务器阻塞了吗?浏览器?我有什么特别的事情要做才能做 https 吗?我必须在 Apache 上设置其他设置以允许 CORS 吗?我的 jQuery $.ajax 正确吗?除了数据、成功和错误(以及 URL 始终为 https)之外,这就是我对 jQuery $.ajax 所做的一切。

再次感谢!

Cross Domain AJAX preflighting failing Origin check 没有帮助(我不认为)。添加了

Header set Access-Control-Allow-Headers: ORIGINS
(调整设置和添加)。所有响应标头都来自管道。

较新

添加了这些

Header 添加 Access-Control-Allow-Headers: Origin
标头添加 Access-Control-Allow-Headers: Accept
仍然没有

请求标头

这些有帮助吗?

Accept:application/json, text/javascript, /; q=0.01
内容类型:application/x-www-form-urlencoded;字符集=UTF-8
来源:http://mysite.com
推荐人:http://mysite.com/
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11

PHP

header("Access-Control-Allow-Origin: http://mysite.com");
header("Access-Control-Allow-Origin: https://mysite.com");

响应标题清晰

响应标头通过所有正常请求而不是跨域 https ajax。

服务器

CentOS 5.8、Apache 2.2.2、PHP 5.3、cPanel、WHM

很好,如果 PHP 没有执行

所以,我匆忙中,直接复制了 slashingweapon 的 cors.php,没有 php 标签。我使用上面的设置用 $.ajax 制作了一个测试页面。

它工作正常(因为在 ajax 触发时没有错误)完成了响应标头。一旦我将标签添加到 PHP 中,错误就发生了。我检查了它是否是一个目录问题,将它放在根目录和子目录中,只要 PHP 没有执行就可以了。

这对任何人都意味着什么?

是否有需要翻转的 PHP 设置?

感谢大家和我一起解决这个问题!

我们有心跳

看起来 htacess 中的多个参数使我的服务器崩溃。我将上面的所有选项都减少到了这个(这对我来说很好,但我很遗憾需要更多的傻瓜):

<IfModule mod_headers.c> <FilesMatch "\.(php)$"> Header set Access-Control-Allow-Origin: http://mysite.com Header add Access-Control-Allow-Methods: POST </FilesMatch> </IfModule>

我在 PHP 中放的只是

echo "这至少有效":

这就是回应。一旦我找出导致我的 PHP 失败的原因,我会发布它。

再次感谢大家!

Zend Guard 问题?

太好了,对不起,伙计们。忘记添加我的站点正在运行 Zend Guard。有一种导致它的感觉。

【问题讨论】:

    标签: jquery ajax zend-framework ssl cors


    【解决方案1】:

    当客户端尝试执行 CORS 请求时,它首先发送“预检”请求以确保服务器支持 CORS。如果预检请求通过,则发送真正的请求。

    您的服务器需要向 CORS 请求发送正确的响应。我有一个CORS PHP 的要点,它显示了如何做到这一点。

    【讨论】:

    • 非常感谢您的帮助。现在要测试你的PHP。我需要向 $.ajax 添加什么特别的东西吗?
    【解决方案2】:

    首先您需要确保 mod_headers 已启用

    a2enmod headers
    

    然后,作为测试,您可以在 .htaccess 文件中将原点设置为通配符

    Header set Access-Control-Allow-Origin *
    

    我看到有和没有冒号 (:) 的文档,我现在没有可以测试的系统,所以你也可以使用它。

    当然启用headers后,你需要弹回apache。

    【讨论】:

    • 你也有 CentOS 解决方案吗?
    • 将以下行添加到您的 httpd.conf 文件“LoadModule headers_module modules/mod_headers.so”中,该文件可能已经存在。
    • 我的标题出现了。上面的错误不断发生。
    • 你能给你网站的链接吗?有时这可能会有所帮助。
    • 它仍在开发中。我宁愿在它准备好之前不要打开它。 ://
    猜你喜欢
    • 2019-09-22
    • 2021-10-24
    • 1970-01-01
    • 2016-10-17
    • 2018-05-29
    • 2013-01-19
    • 2017-07-12
    • 2015-07-09
    相关资源
    最近更新 更多