我有一個REST Api網站,現在我正在創建一個瀏覽器擴展,它將從一些頁面收集數據並將它們發送回REST Api。因爲我希望我的擴展與firefox和chrome兼容,並且易於維護,所以我將實際的代碼作爲腳本標記注入頁面,然後像普通的javascript一樣執行。 我目前只在鉻版本的擴展和我遇到了一個問題:Chrome跨域PATCH請求不起作用
當我試圖發送我的數據到API(PATCH請求),鉻不會讓我說:
XMLHttpRequest無法加載http://my.rest/api。 Access-Control-Allow-Origin不允許使用原產地http://website.com。
我有Access-Control-Allow-Headers,Methods和Origin都設置爲合適的值,但它仍然沒有工作。它可以與GET請求協同工作。我也嘗試過POST和PUT請求,但那些都不工作。
這裏是我的頭:
請求:
OPTIONS /some/api/path HTTP/1.1
Host: my.rest
Connection: keep-alive
Access-Control-Request-Method: PATCH
Origin: http://website.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
X-FireLogger: 1.1
Access-Control-Request-Headers: accept, x-http-auth-user, x-http-auth-token, origin, content-type
Accept: */*
Referer: http://website.com/index.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs-CZ,cs;q=0.8
響應:
Access-Control-Allow-Headers:accept, x-http-auth-user, x-http-auth-token, origin, content-type
Access-Control-Allow-Methods:PATCH
Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Type:text/html; charset=utf-8
Date:Thu, 04 Jul 2013 10:50:08 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.2 (Win64) PHP/5.4.3
X-Frame-Options:SAMEORIGIN
X-Powered-By:Nette Framework
從來就還嘗試設置訪問控制允許來源以完全相同的價值爲原點頭,但它沒有工作。此外,它似乎在Firefox中工作。我有Chrome 27,它應該是最新的。
嘗試添加這個'--disable-web-security' –
我沒有爲自己開發這個擴展,我不能問那些想用它來做這件事的人。你使用[jsonp](http://en.wikipedia.org/wiki/JSONP)是否使用 – hynner
? –