Javascript 跨域消息传递的语法错误

Javascript 跨域消息传递的语法错误,javascript,cross-domain,messaging,Javascript,Cross Domain,Messaging,下面是我的代码。我正在尝试使用跨域消息从网站接收数据。当我单击runit按钮时,我不断收到以下错误:“未捕获的SyntaxError:指定了无效或非法的字符串。”请帮助我识别问题,我不知所措 html代码: <html> <script language="JavaScript"> function runit() { alert("here"); // Get the iframe window object var client = docu

下面是我的代码。我正在尝试使用跨域消息从网站接收数据。当我单击runit按钮时,我不断收到以下错误:“未捕获的SyntaxError:指定了无效或非法的字符串。”请帮助我识别问题,我不知所措

html代码:

<html>
<script language="JavaScript">

function runit() {
    alert("here");
    // Get the iframe window object
    var client = document.getElementById('client');
    // Create the data string to be passed to the OPS JavaScript
    var data = "{'url' : 'http://ops.epo.org/3.0/rest-services/published-data/publication/epodoc/EP1000000/biblio', " + "'method' : 'GET', " + "'requestHeaders' : {'Origin': 'ops.epo.org', 'Accept': 'application/json' } " + "}";
    alert(data);
    // Use the postMessage() method in order to send the data to the
    // iframe object
    client.contentWindow.postMessage(data, 'ops.epo.org');
}
// Add event listener for your window
window.addEventListener("message", receiveMessage, false);
// Method handling window events
function receiveMessage(event) {
    alert("here");
    // Check origin of the event!
    if (event.origin == "http://ops.epo.org") {
        var dataJSON = eval('(' + event.data + ')');
        // work with data / display data
        alert(dataJSON);
    } 
    else {
        alert("Got message from unknown source.");
    }
}    

</script>
<body>
    <input type="button" onclick="runit()" value="runit"></input>
    <iframe width=100 height=100 id="client" src="http://ops.epo.org/3.0/xss/crosssitescript.html" />
</body>
</html>

调用
postMessage
时,必须通过
targetOrigin
的协议:

client.contentWindow.postMessage(data, 'http://ops.epo.org');
这也有效,但可能会产生安全影响:

client.contentWindow.postMessage(data, '*');

我看了一下您正在尝试做的事情,还有使用JSONP的选项。为什么不直接使用它呢,因为它更简单,而且可能支持得更好?

它对我很有效:可能是因为另一方需要有效的JSON,而您的JSON无效。键和值必须使用双引号。更好的方法是在对象上使用JSON.stringify。请参阅编辑-我尝试了这两种建议,但都不起作用。bfavaretto-分数很高。看见此外,JSONP不能用于该网站的所有功能。输入错误来源所产生的错误特别是语法错误,这真的很奇怪。这只是某些浏览器中的语法错误,而不是其他浏览器中的语法错误。
client.contentWindow.postMessage(data, '*');