【发布时间】: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