相关疑难解决方法(0)

是否可以使用javascript更改http请求的标头?

是否可以使用某种JavaScript来更改或设置HTTP请求的标头?

javascript ajax jquery http

7
推荐指数
2
解决办法
3万
查看次数

如何从Web应用程序访问仅支持auth的Twitter API方法

我有一个iPhone的Web应用程序,它最终将在PhoneGap应用程序中运行 - 但是现在我在Safari中运行它.

该应用程序需要访问Twitter朋友的推文,包括私人推文.所以我使用Scribe库实现了OAuth.我成功地将用户反弹到Twitter,让他们进行身份验证,然后反弹.

此时,Web应用程序具有oAuth凭据(密钥和令牌),它在本地持久存在.从这里开始,我希望用户使用Twitter状态/ user_timeline.json方法来获取特定用户的推文.我有使用JSONP请求的应用程序成功执行此操作与未受保护的推文; 当它访问私人Twitter提要的时间轴时,应用程序中会出现HTTP基本身份验证对话框.

我相信我需要向Twitter提供OAuth凭据,以便我的Web应用程序可以识别和验证自己.Twitter建议通过添加HTTP Authorization标头来实现,但由于我正在使用JSONP请求,我认为这不是我的选择.我是否正确地假设这个?

因此,我的选项似乎是将oAuth凭证作为查询字符串参数(Twitter建议反对,但文档建议仍然支持); 或通过中间服务器代理所有推文.我宁愿避开后者.

我使用表单的URL访问Twitter API

http://api.twitter.com/1/statuses/user_timeline.json?user_id=29191439&oauth_nonce=XXXXXXXXXXX&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1272323042&oauth_consumer_key=XXXXXXXXXX&oauth_signature=XXXXXXXXXX&oauth_version=1.0

当user_id是公共用户时,这可以正常工作.当user_id是私人用户时,我会获得HTTP Basic Auth对话框.知道我做错了什么吗?我希望它像"忘记一个重要的参数"一样令人尴尬地简单......

api twitter json oauth jqtouch

6
推荐指数
1
解决办法
4914
查看次数

AngularJS在get请求中包含API密钥

我正在尝试使用AngularJS从幻想数据API获取信息.我使用$ resource在我的控制器中执行我的get请求,但是我无法弄清楚如何正确地包含API密钥.我是否需要将其作为标题包含在内?谢谢.

nflApp.controller('mainController', ['$scope','$resource','$routeParams', function($scope, $resource, $routeParams) {

$scope.fantasyAPI = $resource("https://api.fantasydata.net/nfl/v2/JSON/DailyFantasyPlayers/2015-DEC-28", { callback: "JSON_CALLBACK" }, { get: { method: "JSONP"}});

console.log($scope.fantasyAPI);

}]);
Run Code Online (Sandbox Code Playgroud)

以下是该站点的http请求信息. http请求信息

javascript angularjs

6
推荐指数
1
解决办法
4118
查看次数

是否可以在Javascript中设置跨域请求并设置自定义标头?

由于您无法在JSONP调用上应用自定义标头,如何使用jQuery创建跨域请求并应用自定义标头?

我基本上试图使用jQuery访问谷歌文档,并需要传递身份验证令牌:

var token = "my-auth-token";
$.ajax({
  url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
  dataType: 'json',
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
  },
  success: function(data, textStatus, XMLHttpRequest) {
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
  }
});
Run Code Online (Sandbox Code Playgroud)

注意:这样做的目的是完全绕过应用程序层.使用ruby连接到Google Data API很简单,但是它会占用很多资源,一直在服务器端解析Feed.

javascript ajax jquery cross-domain custom-headers

5
推荐指数
1
解决办法
8240
查看次数

JSONP和ASMX Web服务

我正在试图弄清楚如何使用jQuery对ASMX Web服务进行JSONP调用.这些只是我已经阅读过的一些页面,但没有找到任何解决方案:

如何使用jquery"jsonp"调用外部Web服务?

使用jQuery将跨域JSON发布到ASP.NET

使用JQuery访问ASP.net webservice时出错 - JSONP

使用jQuery.ajax和JSONP设置标头?

http://www.codeproject.com/Articles/43038/Accessing-Remote-ASP-NET-Web-Services-Using-JSONP

http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/

等等...

这是我的示例.NET Web方法:

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void GetEmployee(string employeeId, string callback)
{
    // Get the employee object from the Factory.
    Employee requestedEmployee = EmployeeFactory.GetEmployee(employeeId);

    if(requestedEmployee != null)
    {
        // Return the padded JSON to the caller.
        CrossDomainUtility.SendJsonP(callback, requestedEmployee.ToJson());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是SendJsonP():

public static void SendJsonP(string callback, string json)
{
    // Clear any response that has already been prepared.
    HttpContext.Current.Response.Clear();

    // Set the content type …
Run Code Online (Sandbox Code Playgroud)

asp.net jquery jsonp asmx

5
推荐指数
1
解决办法
9292
查看次数

无法在AngularJS中设置HTTP Basic Auth标头

我编写了以下控制器,用于使用Angular JS测试HTTP Basic Auth.

function TestCtrl($scope, $http, Base64){
    $http.defaults.headers.common.Authorization = 'Basic ' + Base64.encode('admin:secret');
    $http.jsonp( 'http://localhost:5000/test'+'/?callback=JSON_CALLBACK', {query:{isArray:true }}).
    then(function (response) {
         $scope.test = response.data;
     });
}
Run Code Online (Sandbox Code Playgroud)

我可以看到当我设置标题时console.log($http.defaults.headers).但是,当我在Firefox中使用Chrome开发者工具栏或Firebug检查请求标头时,我看不到授权标头.

接收请求的服务器未获得Authorization标头.

我在这里做错了什么?

javascript basic-authentication angularjs

5
推荐指数
1
解决办法
5719
查看次数

使jQuery $ .ajax调用Twitter API 1.1搜索

这是一个非常简单的例子,用于调用Twitter的搜索API,以便从已知有推文的标签中获取所有推文#fml.

我相信我正确使用了此处所述的仅应用程序身份验证:https://dev.twitter.com/docs/auth/application-only-auth(有关呼叫,请参阅步骤3)

我被要求提供一个不涉及任何服务器端代码的解决方案,所以我在javascript中包含了承载代码,这不好开头,但....

我希望这段代码能够运行.相反,它产生错误'400(错误请求)'.有任何想法吗?

$.ajax({
    url: "https://api.twitter.com/1.1/search/tweets.json",
    dataType: "jsonp",
    data: "q=%23fml",
    beforeSend:  function (xhr) { 
             xhr.setRequestHeader ("Authorization", "Bearer XXmyBearerCodeXX"); 
            },
    success: function(json){ alert(json); }
});
Run Code Online (Sandbox Code Playgroud)

编辑1 - 验证的Twitter电话

使用hurl.eu我能够通过上面的查询和授权标题从API获得成功的响应,所以我认为这意味着我的Twitter调用是正确的,只是没有在jQuery.ajax()中正确设置,但我只是不喜欢看不出什么.

twitter ajax jquery twitter-oauth

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

Javascript getJson回调不起作用(这有什么问题?)

我正在尝试使用需要调用的API来获取具有基本HTTP身份验证的Json.我用javascript并不精彩.

我的代码是:

    <script type="text/javascript">

    $.getJSON({
        'url': 'http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
        'beforeSend': function(xhr) {
            xhr.setRequestHeader("Authorization",
                "Basic " + encodeBase64("ABCDEF" + ":" + password));
        },
        success: function(result) {
            alert('done');
        },
        error: function(result) {
            alert('no');
        }
    });
    </script>
Run Code Online (Sandbox Code Playgroud)

我希望这可以称之为成功或错误之一.因此输出应该是警告说"完成"或警告说"不".甚至是开发人员控制台中的错误告诉我出了什么问题.

我没有得到任何东西,也没有警报显示,我在控制台中没有错误.有什么想法在这里发生了什么?

谢谢,

编辑:使用firebug我看到请求标题是:请求标题显示为:

OPTIONS /api/KIS/Institutions.JSON?pageIndex=1&pageSize=25 HTTP/1.1
Host: data.unistats.ac.uk
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: null
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

这似乎不正确,因为它应该是:授权:基本TheSecurityKey

响应是405,方法不允许重新加载页面以获取源代码:http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex = 1&pageSize = 25

响应标头:

HTTP/1.1 405 Method Not Allowed …
Run Code Online (Sandbox Code Playgroud)

javascript jquery getjson

2
推荐指数
1
解决办法
2132
查看次数