当URL是本地URL时,setRequestHeader工作,但当URL远离时,则不起作用

时间:2014-12-11 16:10:58

标签: jquery symfony request wsse

我的目标是在整个WSSE protocole中连接到Symfony。 当我尝试在本地连接到Symfony时,我有一个完美的代码,但是当我尝试连接到远程服务器上的同一个Symfony时却没有。 (所有代码都相同,唯一更改的参数是APILINK,我还设置.htaccess以允许所有标题,请求和来源)

这是代码(javascript)

SimpleWSSEAuth.setup = function(username, password, salt, options) {
    $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
        jqXHR.setRequestHeader('Authorization', 'Authorization profile="UsernameToken"');
        jqXHR.setRequestHeader('X-WSSE',    SimpleWSSEAuth.BuildXWSSEHeader(username, password, salt));
    });
};

SimpleUserAPI.WSSEAuthentification = function(password, data, success, error) {
    SimpleWSSEAuth.setup(data.username, password, data.salt);

    $.ajax({type: 'GET', dataType:"json", url: APILINK + "public/user", crossDomain: true}).done(success).fail(error);
};

如您所见,我在ajax请求之前调用了SimpleWSSEAuth.setup。

这是我在APILINK当地的请求:

enter image description here

这是我在APILINK遥远时的要求:

enter image description here

您可以看到元素' 授权'和' X-WSSE '在第一个请求中出现,但在第二个请求中出现。

如何更改我的请求以使用远程服务器添加这两个元素?这是一个跨域问题吗?我试图在网上找到解决方案,但我找不到任何有效的方法。

1 个答案:

答案 0 :(得分:0)

通过查看远程api链接的截图,您将获得" 405方法不允许错误"用你的ajax电话。您需要将dataType设置为JSONP而不是JSON,并在ajax方法中将crossDomain设置为true

$。ajax({type:' GET',dataType:" jsonp ", crossDomain:true ,. ..}}