我正在从域A到域B进行AJAX调用.
我的域B检查A是否在允许的域列表中并设置Access-Control-allow-Origin为域A.到目前为止,这么好.
域B通过使用Location报头向域C发送302重定向来响应该请求.
AJAX调用遵循重定向到域C,但具有标题:Origin: null.
我希望在origin执行重定向之后将标头设置为域A.
任何人都可以向我解释为什么原点设置为null而不是域A?
例
从域A到B的请求
GET / HTTP/1.1
Host: domain-B.com
Origin: http://domain-A.com
Run Code Online (Sandbox Code Playgroud)来自域B的回复:
Access-Control-Allow-Origin: http://domain-A.com
Location: http://domain-C.com
Run Code Online (Sandbox Code Playgroud)AJAX调用遵循重定向到域C:
GET HTTP/ 1.1
Host: domain-C.com
Origin: null
Run Code Online (Sandbox Code Playgroud)正如你可以看到从这个Bugzilla的线程(和也),Firefox不总是在POST请求发送Origin标.RFC规定不应在某些未定义的"隐私敏感"上下文中发送它.Mozilla 在这里定义了这些上下文.
我想知道的是,这些是Firefox不会发送Origin标头的唯一情况.据我所知它也不会发送它在跨源POST请求(虽然Chrome和IE将),但我无法在文档中确认.它是否在我遗漏的地方列举?
谢谢.
我试图从ajax请求访问驻留在S3中的html文件,我收到403错误.
我在线阅读AWS,如果我这样做,我需要设置AWS CORS规则来修复403错误.
但是,我已经尝试了两天而且没有任何运气.这是我的CORS配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>XMLHttpRequest</ExposeHeader>
<AllowedHeader>x-csrftoken</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
我的HTTP请求如下:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Access-Control-Request-He... x-csrftoken
Access-Control-Request-Me... GET
Connection keep-alive
Host xxxxxxxxx.cloudfront.net
Origin http://localhost:8000
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Run Code Online (Sandbox Code Playgroud)
谁能帮我看看我错过了什么?
谢谢!
我$.ajax必须设置哪些参数来尝试将AJAX请求作为正常请求进行掩码?我想这与正确的标题有关.
我认为问题的一个重要部分是当处理本地.html文件时,jQuery将header-value设置为Originto null.
有没有办法取出Origin-header?
在这一刻,如果我通过网络浏览器浏览它并且当我执行jQuery AJAX请求时,我会从同一个URL获得不同的结果.
ajax ×3
cors ×2
cross-domain ×2
http ×2
amazon-s3 ×1
fetch-api ×1
firefox ×1
http-headers ×1
jquery ×1
redirect ×1