标签: cross-domain

尽管有标题,但Firefox的"跨源请求已被阻止"

我正在尝试制作一个简单的跨源请求,并且Firefox始终使用此错误阻止它:

跨源请求已阻止:同源策略禁止在[url]读取远程资源.这可以通过将资源移动到同一域或启用CORS来解决.[URL]

它在Chrome和Safari中运行良好.

据我所知,我已经在我的PHP上设置了所有正确的标题以允许它工作.这是我的服务器响应的内容

HTTP/1.1 200 OK
Date: Mon, 23 Jun 2014 17:15:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u8
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Request-Headers: X-Requested-With, accept, content-type
Vary: Accept-Encoding
Content-Length: 186
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

我尝试过使用Angular,jQuery和一个基本的XMLHTTPRequest对象,如下所示:

var data = "id=1234"
var request = new XMLHttpRequest({mozSystem: true})
request.onload = onSuccess;
request.open('GET', 'https://myurl.com' + '?' + data, true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
request.send()
Run Code Online (Sandbox Code Playgroud)

...它适用于除Firefox之外的所有浏览器.有人能帮忙吗?

javascript firefox cross-domain cors

100
推荐指数
6
解决办法
19万
查看次数

如何在node.js上的express.js框架中启用跨源资源共享(CORS)

我正在尝试在node.js中构建一个支持跨域脚本的Web服务器,同时仍然提供来自公共目录的静态文件.我正在使用express.js,我不确定如何允许跨域脚本(Access-Control-Allow-Origin: *).

我看到这篇文章,我觉得没有用.

var express = require('express')
  , app = express.createServer();

app.get('/', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});

app.configure(function () {
    app.use(express.methodOverride());
    app.use(express.bodyParser());
    app.use(app.router);
});

app.configure('development', function () {

    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function () {


    var oneYear = 31557600000;
    //    app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler());
});

app.listen(8888);
console.log('express running at http://localhost:%d', 8888);
Run Code Online (Sandbox Code Playgroud)

webserver cross-domain node.js cors express

97
推荐指数
3
解决办法
13万
查看次数

是否有跨域iframe高度自动调整器有效?

我尝试了一些解决方案,但没有成功.我想知道是否有一个解决方案,最好有一个易于遵循的教程.

iframe cross-domain

95
推荐指数
3
解决办法
9万
查看次数

在Firefox中禁用跨域Web安全性

在Firefox中,我如何--disable-web-security在Chrome中完成相同的操作.这已经发布了很多,但从来没有一个真正的答案.大多数是附加组件的链接(其中一些在最新的Firefox中不起作用或根本不起作用)和"你只需要在服务器上启用支持".

  1. 这是暂时的测试.我知道安全隐患.
  2. 我无法打开服务器上的CORS,特别是我永远不能允许localhost或类似的.
  3. 标志,设置或其他东西比插件要好很多.我也尝试过:http://www-jo.se/f.pfleger/forcecors,但是因为我的请求完全是空的,所以一定是错的,但Chrome中的相同请求可以恢复正常.

同样,这仅用于在推送到prod之前进行测试,然后,这将是允许的域.

security firefox cross-domain cors

95
推荐指数
4
解决办法
16万
查看次数

如何为基本身份验证发送正确的授权标头

我正在尝试从我的API发布数据,但我无法通过基本身份验证.

我尝试:

$.ajax({
  type: 'POST',
  url: http://theappurl.com/api/v1/method/,
  data: {},
  crossDomain: true,
  beforeSend: function(xhr) {
    xhr.setRequestHeader('Authorization', 'Basic ZWx1c3VhcmlvOnlsYWNsYXZl');
  }
});
Run Code Online (Sandbox Code Playgroud)

我的服务器配置响应是:

response["Access-Control-Allow-Origin"] = "*"
response["Access-Control-Allow-Methods"] = "POST"
response["Access-Control-Max-Age"] = "1000"
response["Access-Control-Allow-Headers"] = "*"
Run Code Online (Sandbox Code Playgroud)

我得到的标题是:

请求标题

OPTIONS /api/v1/token-auth/ HTTP/1.1
Host: theappurl.com
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31
Access-Control-Request-Headers: origin, authorization, content-type
Accept: */*
Referer: http://127.0.0.1:8080/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: es,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Run Code Online (Sandbox Code Playgroud)

响应头

HTTP/1.1 401 Unauthorized
Server: nginx/1.1.19
Date: Fri, 16 Aug …
Run Code Online (Sandbox Code Playgroud)

api django ajax jquery cross-domain

92
推荐指数
4
解决办法
38万
查看次数

跨子域的PHP会话

我想设置以下内容:

auth.example.com
sub1.example.com
sub2.example.com
Run Code Online (Sandbox Code Playgroud)

如果用户访问sub1.domain.com或sub2.domain.com且他们未登录,则会将其推送到auth.domain.com并登录.sub1.domain.com和sub2.domain.com是两个单独的应用程序但使用相同的凭据.

我尝试在php.ini中设置以下内容:

session.cookie_domain = ".example.com"
Run Code Online (Sandbox Code Playgroud)

但它似乎没有将信息从一个域传递到另一个域.

[编辑]

我尝试了以下方法:

sub1.domain.com/test.php

session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Regsitered'] = 1;
echo '<a href="http://auth.example.com/test.php">Change Sites</a>'
Run Code Online (Sandbox Code Playgroud)

auth.domain.com/test.php

session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Checked'] = 1;
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)

会话ID完全相同但是当我转出$ _SESSION变量时,它不显示两个键,只是我在每个域下设置的任何键.

[编辑2]

我更新了[编辑]

php authentication session cross-domain

89
推荐指数
3
解决办法
8万
查看次数

为什么canvas.toDataURL()会抛出安全异常?

我睡眠不足还是什么?以下代码

var frame=document.getElementById("viewer");
frame.width=100;
frame.height=100;

var ctx=frame.getContext("2d");
var img=new Image();
img.src="http://www.ansearch.com/images/interface/item/small/image.png"

img.onload=function() {
    // draw image
    ctx.drawImage(img, 0, 0)

    // Here's where the error happens:
    window.open(frame.toDataURL("image/png"));
}
Run Code Online (Sandbox Code Playgroud)

抛出这个错误:

SECURITY_ERR: DOM Exception 18
Run Code Online (Sandbox Code Playgroud)

这不可能不起作用!请问有人解释一下吗?

javascript html5 canvas cross-domain

88
推荐指数
4
解决办法
7万
查看次数

跨域iframe调整大小

如何从其他域调整iframe的大小

-编辑

向下滚动查看某些解决方案..或阅读如何不执行此操作:D

经过数小时的代码黑客攻击后,结论是iframe中的任何内容都无法访问,即使是在我的域上呈现的滚动条也是如此.我尝试了很多技术无济于事.

为了节省您的时间,请不要只使用sendMessages进行跨域通信. 我使用HTML <5的插件 - 转到底部以获得一个很好的例子:)


过去几天,我一直在尝试将iframe集成到网站中.这是一个短期解决方案,而另一方开发和API(可能需要几个月......)因为这是短期解决方案,我们想要使用easyXDM-我可以访问其他域,但很难让他们要求添加p3p标头,因为它是.....

3个iframe

我找到的最接近的解决方案是3个iframe - 但它是精神上的铬和野生动物园,所以我不能使用它.

用铬打开

http://css-tricks.com/examples/iFrameResize/crossdomain.php#frameId=frame-one&height=1179

测量滚动条

我发现了另一篇关于如何使用scrollheight尝试调整表单大小的文章..理论上它运作良好但我无法使用iframes滚动高度正确应用它.

document.body.scrollHeight
Run Code Online (Sandbox Code Playgroud)

该obvoisly使用身体高度(不能访问这些属性100%是基于客户端显示canvaz而不是x-domains文档高度)

我尝试使用jquery来获取iframes的高度

$('#frameId').Height()

$('#frameId').clientHeight

$('#frameId').scrollHeight
Run Code Online (Sandbox Code Playgroud)

返回值不同的铬和即 - 或根本没有意义.问题是框​​架内的所有内容都被拒绝 - 甚至滚动条......

计算样式

但是如果我在iframe的chrome中检查和元素,那么bladdy会向我展示iframe中的文档维度(使用jquery x-domain来获取iframe.heigh - 访问被拒绝)计算CSS中没有任何内容 在此输入图像描述

现在chrome如何计算出来?(编辑 - 浏览器使用其在渲染引擎中的内置重新渲染页面来计算所有这些设置 - 但是没有附加到任何地方以防止跨域欺诈..所以...)

HTML4

我读了HTML4.x的规范,它说那里应该有通过document.element公开的只读值,但它是通过jquery拒绝访问的

代理框架

我走了代理网站的路线并计算哪个是好的..直到用户通过iframe登录并且代理获得登录页面而不是实际内容.对某些人来说,调用两次页面也是不可接受的

http://www.codeproject.com/KB/aspnet/asproxy.aspx

http://www.johnchapman.name/aspnet-proxy-page-cross-domain-requests-from-ajax-and-javascript/

重新渲染页面

我没有走到这一步,但有一些jscript引擎会查看源代码并根据源文件重新呈现页面.但它需要黑客攻击那些jscripts ..这对商业实体来说不是一个理想的情况......而且有些人会把纯Java小程序或服务器端渲染

http://en.wikipedia.org/wiki/Server-side_JavaScript

http://htmlunit.sourceforge.net/ <-java不是jscript

http://maxq.tigris.org/


编辑09-2013 更新

所有这些都可以通过HTML5套接字完成.但是easyXDM对于非HTML5投诉页面来说是一个很好的后备.

方案1非常好的解决方案!

使用easyXDM

在您的服务器上,您可以设置一个页面

<html>
<head>
<script src="scripts/easyXDM.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">

    var transport = new easyXDM.Socket(/** The configuration */{
    remote: "http://www.OTHERDOMAIN.com/resize_intermediate.html?url=testpages/resized_iframe_1.html",

    //ID of the …
Run Code Online (Sandbox Code Playgroud)

html css scripting iframe cross-domain

85
推荐指数
3
解决办法
9万
查看次数

crossorigin属性的目的......?

在图像和脚本标签中.

我的理解是您可以访问其他域上的脚本和图像.那么什么时候使用这个属性?

当你想限制他人访问你的脚本和图像的能力时,这是吗?

图片

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-crossorigin

脚本

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script

html cross-domain

79
推荐指数
3
解决办法
5万
查看次数

使用跨域帖子发送凭据?

根据带有凭据的请求,Firefox只会发送凭据以及跨域帖子

invocation.withCredentials = "true";

设置...但似乎jQuery的Ajax API没有为此提供任何机制.

有没有我错过的东西?还有其他方法可以做到吗?

javascript jquery cross-domain

76
推荐指数
2
解决办法
14万
查看次数