小编sid*_*ker的帖子

如何跳过AngularJS中的OPTIONS预检请求

我开发了一个PhoneGap应用程序,现在正在转换为移动网站.除了一个小小的故障外,一切顺利.我通过POST请求使用某个第三方API,这在应用程序中运行良好,但在移动网站版本中失败.

仔细看后,似乎AngularJS(我猜浏览器实际上)是先发送一个OPTIONS请求.我今天学到了很多关于CORS的知识,但我似乎无法弄清楚如何完全禁用它.我无权访问该API(因此无法进行更改),但他们已将我正在处理的域添加到其Access-Control-Allow-Origin标头中.

这是我正在谈论的代码:

        var request = {
                language: 'fr',
                barcodes: [
                    {
                        barcode: 'somebarcode',
                        description: 'Description goes here'
                    }
                ]
            };
        }
        var config = {
            headers: { 
                'Cache-Control': 'no-cache',
                'Content-Type': 'application/json'
            }
        };
        $http.post('http://somedomain.be/trackinginfo', request, config).success(function(data, status) {
            callback(undefined, data);
        }).error(function(data, status) {
            var err = new Error('Error message');
            err.status = status;
            callback(err);
        });
Run Code Online (Sandbox Code Playgroud)

如何阻止浏览器(或AngularJS)发送OPTIONS请求并跳转到实际的POST请求?我正在使用AngularJS 1.2.0.

提前致谢.

post cors angularjs

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

如何避免HTTP错误429(Too Many Requests)python

我正在尝试使用Python登录网站并从几个网页收集信息,我收到以下错误:

Traceback (most recent call last):
  File "extract_test.py", line 43, in <module>
    response=br.open(v)
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 255, in _mech_open
    raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 429: Unknown Response Code
Run Code Online (Sandbox Code Playgroud)

我用time.sleep()它并且它有效,但它似乎不聪明和不可靠,有没有其他方法来躲避这个错误?

这是我的代码:

import mechanize
import cookielib
import re
first=("example.com/page1")
second=("example.com/page2")
third=("example.com/page3")
fourth=("example.com/page4")
## I have seven URL's I want to open

urls_list=[first,second,third,fourth]

br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

# Browser options 
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

# …
Run Code Online (Sandbox Code Playgroud)

python http mechanize http-status-code-429

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

HTTP API速率限制HTTP响应标头的示例

其中一个附加HTTP状态代码(RFC6585)是

在哪里可以找到对此HTTP响应状态有用的HTTP/REST API速率限制HTTP响应头的示例?

api rest http rate-limiting http-status-code-429

73
推荐指数
2
解决办法
5万
查看次数

如何在JAX-RS Web服务上启用跨域请求?

我开发了一组宁静的Web服务.由于错误,我无法从远程客户端调用任何这些方法 No 'Access-Control-Allow-Origin' header is present on the requested resource.

这些服务在localhost上完美运行.是否有任何更改或配置要在服务器端解决此问题.即启用跨域请求.

我正在使用WildFly 8,JavaEE 7

jax-rs cross-domain cors java-ee-7 wildfly-8

67
推荐指数
5
解决办法
8万
查看次数

禁用Spring Security for OPTIONS Http Method

是否可以为某种HTTP方法禁用Spring Security?

我们有一个Spring REST应用程序,其服务要求将授权令牌附加到http请求的标头中.我正在为它编写一个JS客户端,并使用JQuery发送GET/POST请求.该应用程序使用此过滤器代码启用CORS.

doFilter(....) {

  HttpServletResponse httpResp = (HttpServletResponse) response;
  httpResp.setHeader("Access-Control-Allow-Origin", "*");
  httpResp.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
  httpResp.setHeader("Access-Control-Max-Age", "3600");
  Enumeration<String> headersEnum = ((HttpServletRequest) request).getHeaders("Access-Control-Request-Headers");
  StringBuilder headers = new StringBuilder();
  String delim = "";
  while (headersEnum.hasMoreElements()) {
    headers.append(delim).append(headersEnum.nextElement());
    delim = ", ";
  }
  httpResp.setHeader("Access-Control-Allow-Headers", headers.toString());
}
Run Code Online (Sandbox Code Playgroud)

但是当JQuery发送对CORS的OPTIONS请求时,服务器会使用Authorization Failed令牌进行响应.显然OPTIONS请求缺少授权令牌.那么可以让OPTIONS从Spring安全配置中逃脱安全层吗?

java spring spring-mvc spring-security cors

66
推荐指数
4
解决办法
6万
查看次数

为nodejs中的多个域启用Access-Control-Allow-Origin

我试图让在node.js的CORS但问题是,我不能设置*Access-Control-Allow-Origin,如果Access-Control-Allow-Credentials设置.

另外规范说我不能做一个数组或逗号分隔值,Access-Control-Allow-Origin建议的方法是做类似于这个Access-Control-Allow-Origin多个原始域的东西?

但我似乎无法在node.js中这样做

["http://mydomain.com:9001", "http://mydomain.com:5001"].map(function(domain) {
  res.setHeader( "Access-Control-Allow-Origin", domain );
});
res.header( "Access-Control-Allow-Credentials", true );
Run Code Online (Sandbox Code Playgroud)

这里的问题是它被数组中的最后一个值覆盖,因此标题将被设置为 res.setHeader( "Access-Control-Allow-Origin", "http://mydomain.com:5001" );

客户端浏览器出错:

XMLHttpRequest无法加载http://mydomain.com:9090/api/sync."Access-Control-Allow-Origin"标头的值" http://mydomain.com:5001 "不等于提供的原点.因此,不允许来源" http://mydomain.com:9001 "访问.

node.js cors

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

不透明响应有哪些限制?

不透明响应被定义为Fetch API的一部分,并表示在未启用CORS时对远程源发出的请求的结果.

关于如何使用不透明的响应(包括JavaScript和页面上的资源)存在哪些实际限制和"陷阱"?

javascript cors service-worker fetch-api

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

fetch(),你如何进行非缓存请求?

fetch('somefile.json'),可以请求从服务器而不是从浏览器缓存中提取文件?

换句话说,有fetch()没有可能绕过浏览器的缓存?

javascript html5 fetch-api

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

fetch:使用JSON错误对象拒绝承诺

我有一个HTTP API,它在成功和失败时返回JSON数据.

示例失败将如下所示:

~ ? http get http://localhost:5000/api/isbn/2266202022 
HTTP/1.1 400 BAD REQUEST
Content-Length: 171
Content-Type: application/json
Server: TornadoServer/4.0

{
    "message": "There was an issue with at least some of the supplied values.", 
    "payload": {
        "isbn": "Could not find match for ISBN."
    }, 
    "type": "validation"
}
Run Code Online (Sandbox Code Playgroud)

我想在JavaScript代码中实现的是这样的:

fetch(url)
  .then((resp) => {
     if (resp.status >= 200 && resp.status < 300) {
       return resp.json();
     } else {
       // This does not work, since the Promise returned by `json()` is never fulfilled
       return Promise.reject(resp.json()); …
Run Code Online (Sandbox Code Playgroud)

javascript promise es6-promise fetch-api

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

Firebase存储和访问控制允许原点

我正在尝试通过XMLHttpRequest从Firebase存储下载文件,但资源上没有设置Access-Control-Allow-Origin,因此无法实现.有没有办法在存储服务器上设置此标头?

  (let [xhr (js/XMLHttpRequest.)]
    (.open xhr "GET" url)
    (aset xhr "responseType" "arraybuffer")
    (aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
    (.send xhr)))
Run Code Online (Sandbox Code Playgroud)

Chrome错误消息:

XMLHttpRequest无法加载 https://firebasestorage.googleapis.com/[EDITED] 请求的资源上没有"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:3449 "因此不允许访问.

cors google-cloud-storage firebase firebase-storage

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