我使用PySide6.QtWebEngineWidgets.QWebEngineView时, 有如下提示信息,可以如何消除。 js: Access to XMLHttpRequest at 'https://miao.baidu.com/abdr?_o=file%3A%2F%2F' from origin 'file://' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
时间: 2024-04-28 17:22:05 浏览: 156
这是因为你的请求被 CORS(跨域资源共享)策略所阻止了。默认情况下,Web浏览器只允许从同一域名下加载的资源进行AJAX请求,如果你想要从其他域名加载资源,就需要在服务器端设置允许跨域访问。
对于你的情况,因为你的请求包含了身份认证信息,所以浏览器不允许使用通配符"*"作为响应头中的"Access-Control-Allow-Origin"。这个问题可以通过设置响应头中的"Access-Control-Allow-Origin"值为请求的来源来解决。
如果你无法控制远程服务器的响应头,那么你可以考虑将请求发送到本地服务器,然后通过本地服务器进行转发。在转发时,你可以在本地服务器上修改响应头,从而解决跨域访问的问题。
如果你使用的是PySide6.QtWebEngineWidgets.QWebEngineView,你可以在创建QWebEnginePage实例时,设置QWebEngineProfile的内容,从而实现对跨域访问的控制。例如,你可以使用如下代码:
```python
from PySide6.QtWebEngineWidgets import QWebEngineProfile, QWebEnginePage
profile = QWebEngineProfile.defaultProfile()
profile.setHttpUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
profile.setPersistentCookiesPolicy(QWebEngineProfile.NoPersistentCookies)
profile.setHttpCacheType(QWebEngineProfile.MemoryHttpCache)
profile.setSpellCheckEnabled(False)
page = QWebEnginePage(profile, parent=self)
```
在这个例子中,我们设置了一个新的QWebEngineProfile,禁用了持久化Cookie,设置了HTTP缓存类型为MemoryHttpCache,并禁用了拼写检查。这个新的profile对象可以被用于创建QWebEnginePage实例。
希望这些信息可以帮助到你。
阅读全文