設置cors規則后仍然報錯No 'Access-Control-Allow-Origin’
时间: 2024-06-13 09:03:16 浏览: 94
允许CORS:访问控制 - 允许来源「Allow CORS: Access-Control-Allow-Origin」-crx插件
當你設置了CORS(跨源資源共享)規則但仍然收到"No 'Access-Control-Allow-Origin' header is present on the requested resource."的錯誤,這通常意味著目標服務器沒有正確地在響應頭部添加`Access-Control-Allow-Origin`標誌,允許指定的源訪問你的資源。
以下是設置CORS規則的一般步驟,請確保你已經在後端服務器上進行了如下配置:
1. **設置响应头**:
```python
from flask import Flask, jsonify, make_response
app = Flask(__name__)
@app.after_request
def add_cors(response):
response.headers.add('Access-Control-Allow-Origin', '*') # 允許所有源
response.headers.add('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, Authorization, Access-Control-Allow-Origin')
response.headers.add('Access-Control-Max-Age', 3600) # 1小時緩存
if request.method == 'OPTIONS':
response.status_code = 204
return response
```
2. **處理OPTIONS請求**:
CORS預飛請求(`OPTIONS`)是一個檢查請求是否被允許的請求,如果服務器允許跨域,它會發送一個`204 No Content`響應,而不是返回數據。確保對`OPTIONS`請求的處理程序正確。
如果你已經做了上述步驟但仍遇到問題,請檢查以下幾點:
- **確認服務器是否正確接收到請求**:確保不是前端發送請求的方式有誤,比如請求方法、協議(HTTP/HTTPS)或缺少必要的`Origin`頭部。
- **檢查防火牆和代理设置**:防火牆或代理服务器可能阻止了CORS請求。
- **確認後端服務是否正確應用了CORS策略**:確保所有API端點都使用了相同的CORS配置。
--相關問題--:
1. 何謂CORS預飛請求?
2. 如何在Node.js中實現類似的CORS設置?
3. 防火牆如何影響CORS?
阅读全文